CIO help

  • Introduction
    • HELP command
    • EDITING
    • SUBSTitution
    • VERSION command
    • STATUS command
  • ENVironmental variables
  • CIO variables
    • defining CIO variables: char, int, float, double ...
    • ALIAS command
    • CHAR command
    • DOUBLE command
    • FLOAT command
    • INT command
    • OVAR command
    • VAR command
    • DEFsp command
    • deleting CIO variables
    • WIPE command
    • UNDefsp command
    • KEep command
    • LIst command
  • CIO program flow
    • commands LOAD, LGO, RUN, and CALL
    • LGO command
    • CALL command
    • LOad command
    • RUN command
    • loops and conditional statements
    • DO command
    • IF command
    • REPeat command
    • WHile command
    • ENDDo command
    • ENDIF command
    • ENDRep command
    • ENDWhile command
    • CIO program: exit, continue, debugging
    • ERROR command
    • EXit command
    • Continue command
    • PAUSE command
    • STEPp command
    • TRace command
  • CIO array manipulations
    • ADD command
    • ADDF command
    • DIFF command
    • DIVS command
    • INC command
    • INPut command
    • INTEG command
    • MOve command
    • MULR command
    • MULS command
    • MULT command
    • NORM command
    • RESet command
    • SHift command
    • SUB command
    • TRUNC command
    • TYPesp command
    • VLG command
    • VLN command
    • VSQRT command
    • SPRint command
  • CIO arithmetic tools
    • calculations with simple variables
    • EVal command
    • KALK command
    • PRINTX command
    • calculations with arrays
    • MINmax command
    • SUM command
    • CTR command
    • INTERPOL command
    • ZERO command
  • CIO graphics
    • CURsor command
    • DISplay command
    • DIX command
    • GRint command
    • PLOT command
    • GEPPOST command
    • MAP command
    • MAPOPT command
    • SLICE command
    • REDRaw command
  • CIO system sommands
    • CDIR command
    • DIR command
    • EDit command
    • MORE command
    • SHell command
    • SLEEP command
    • STOP command
    • SYStem command
    • TIMe command
  • CIO console input/output
    • CLEAR command
    • LOG command
    • History command
    • PRint command
    • SILENT command
    • MENU command
    • ALTIO command
  • CIO file input/output
    • CLose command
    • DLU command
    • FPRint command
    • IMPort command
    • Open command
    • RDAscii command
    • REWind command
    • Xport command
  • CIO spectra
    • SPList command
    • PLAB command
    • PUT command
    • Get command
    • LABGET command
    • LABlst command
    • LABSET command
    • SPCOPY command

Introduction

Last update: 10 December 1998

CIO is the command language used in interactive programs such as control, mctl, pctl, and others The CIO syntax is described in CIO comand language.

This is the on-line help file, giving short descriptions of each of the CIO commands.

For further details:

      - try out program control
      - in program control, give command HELP <command>
      - man 1 cio
      - man 1 showmenu
      - man 1 svc
      - man 5 cio
      - man 3 cio

HELP command

cio on-line help

help * , or ( help ; ), give a list of available commands.

help command gives a short description of the command.

syntax used in these descriptions:
    <text> : text enclosed by < > indicates the type of an argument,
             and should be replaced by an actual argument.

    A B C  : capital letters indicate reference to a variable,
             usually an array.

    ...    : three dots indicate that the preceding type of argument
             may be repeated.

    (<value[i]>, i:= <first> to <last>) :
             Indicates a set of elements
             <value[i]>, with i ranging from <first> to <last>
Example:
    if <condition> ; <statement> ... ; endif
    means that several statements may be present between the
    commands IF and ENDIF.
Help on expressions is given by command 'help kalk'

Further help may be found in the documents
  • CIO command language
  • CIO procedures

EDITING

cio offers the facility of command line editing. The editing functions are similar to those of the emacs editor and the tcsh. Some useful functions are:

left - right arrows: move left/right over the line

up - down arrows: get next/previous command line from history list

CTRL-A: goto the beginning of the line.

CTRL-E: goto the end of line.

CTRL-K: delete to end of line.

notes
  • see also SUBSTitution
  • for a complete overview of the command line editing possibilities, see the manpages of the readline library, e.g. man readline.
  • Command line editing is not implemented in the OS-9 version of CIO

SUBSTitution

In an interactive session, (t)csh style history substitution may be applied. In combination with the 'command line editor' (see EDITING) the history can thus be used to recall, modify, and execute previous commands.

!! refers to the previous command.

!-N refers to the command N lines back. !<string> refers to the most recent command starting with <string>.
    for details see 'info history', best viewed by xemacs
notes
  • see also EDITING
  • History substitution is not implemented in the OS-9 version of CIO

VERSION command

version

Show information on the version of the current program

STATUS command

status

Display the values of some parameters.

ENVironmental variables

XSCALE AND GEPSCALE

The size of the graphics display window may be varied by the environmental variable GEPSCALE. The size of the menu window can be varied by the environmental variable XSCALE. Defaults for both are 0.5. To increase this size give Unix commands:
    setenv GEPSCALE 0.7
    setenv XSCALE 0.7
These commands should be given before starting mctl or other cio application, and are best included in your '.cshrc' file.

Other environmental variables used in CIO:
    TMPDIR   directory for temporary files
    PRO      directory for CIO scripts ("pro" files)
    LIST     program called by CIO command more
    EDITOR   program called by CIO command edit
    SHELL    shell forked by CIO command shell
environmental variables for the menu subprogram
    SHOWMENU         program called by CIO command menu
    MENUDIR          general CIO menu directory
    CONTROLMENUDIR   program-specific menu directories
    MCTLMENUDIR      "
    GAUSSMENUDIR     "

    example: setenv MCTLMENUDIR ~/menu/MCTL:/usr/local/menu/MCTL
Environmental variables, prefixed with the symbol $, may be used in general when a string is expected.


CIO VARIABLES


defining CIO variables: char, int, float, double ...

ALIAS command

alias [<level>] <varname> <text> alias [<level>] <varname>[<size>] <text>
    Declare a variable, or an array of variables, of type char.

    <level> is an optional argument, with possible values -p,-g,-l,
    which defines the variable as permanent, global, or local.

    <text> is a 'raw' line of text: special symbols are not interpreted as such.
    Difference with command char: <varname> is separated from <text>
    by the first character ` ' (space).
    Further spaces, if any, are considered to be part of <text>!

CHAR command

char [<level>] <varname>
    char [<level>] <varname>=<text>
    char [<level>] <varname>[<size>]
    char [<level>] <varname>[<size>]=<text>

    Declare a variable, or an array of variables, of type char.
    <text> is a 'raw' line of text: 
    special symbols are not interpreted as such.

    <level> is an optional argument, with possible values -p,-g,-l,
    which defines the variable as permanent, global, or local.

    Difference with command alias: <varname> is separated from <text>
    by the first character `='.
    Space characters (` ') before this `=' are ignored.
    Spaces after the `=', if any, are considered to be part of <text>!

DOUBLE command

double [<level>] <declarator> ...
    <declarator> may be of the forms:
    <varname>
    <varname>=<expression>
    <varname>[<size>]

    Declare variable(s) and/or array(s) of variables of type double.

    <level> is an optional argument, with possible values -p,-g,-l,
    which defines the variable as permanent, global, or local.

FLOAT command

float [<level>] <declarator> ...
    <declarator> may be of the forms:
    <varname>
    <varname>=<expression>
    <varname>[<size>]

    Declare variable(s) and/or array(s) of variables of type float.

    <level> is an optional argument, with possible values -p,-g,-l,
    which defines the variable as permanent, global, or local.

INT command

int [<level>] <declarator> ...
    <declarator> may be of the forms:
    <varname>
    <varname>=<expression>
    <varname>[<size>]

    Declare variable(s) and/or array(s) of variables of type int.

    <level> is an optional argument, with possible values -p,-g,-l,
    which defines the variable as permanent, global, or local.

OVAR command

ovar [<level>] <new_name> <original_name> <offset> <nelements>
    Define a variable of type `o' (overlap).
    The new variable <new_name> is a subset of an existing variable
    <original_name>. It starts at element <offset> of the original
    variable, and has a length of <nelements>. The original variable
    should be large enough to accommodate the new one.

    <level> is an optional argument, with possible values -p,-g,-l,
    which defines the variable as permanent, global, or local.
    -----------------------------------------------------------------
    Example:
      float -g sp[4k]
      ovar -g a1 sp 0k 2k
      ovar -g a2 sp 2k 2k
      ovar -g r1 a1 1k 1k
      ovar -g r2 a2 1k 1k

    Now a1 and a2 are subarrays of length 2k, of array sp.
    r1 is a subarray of a1, and r2 a subarray of a2.
    r2[j] coincides with a2[j+1k], and with sp[j+3k].

VAR command

    The command VAR serves to define variables of type `v',
    ( i.e. lists of variables), as well as to set values for
    members of such arrays.
var def [<level>] <varlist_declarator> ...
    <varlist_declarator> may be of the forms:
    <varlist_name>
    <varlist_name>[<size>]

    <level> is an optional argument, with possible values -p,-g,-l,
    which defines the variable as permanent, global, or local.
var set <varlist_name> (<name[i]>,i=0 to size-1)

var mset <varlist_name> <first> <last> (<name[i]>,i=first to last).
    In the first form (var set) all names of the varlist are set.
    The second form sets or modifies a restricted number of names.
    The actual variable corresponding to <name[i]> may be declared
    before or after 'var set' or 'var mset' is given.
var list <varlist_name>.
    Gives a survey of the current contents of a varlist.
var keep <varlist_name>.
    Make the specified varlist a global variable.
var wipe <varlist_name>.
    Delete a varlist.

    Var keep <varlist_name> and var wipe <varlist_name> may be used
    to prevent ambiguities between the varlist itself, or its members.
    Strictly speaking, these two commands are only needed for
    varlists of size 1, where this ambiguity occurs.
    ----------------------------------------------------------------------
    Variables of this type may be useful in CIO programs.
    example: float sp1[1k], sp2[1k];
             var def sp[2];
             var set sp sp1,sp2;
             ...
             dis sp[j] 0 255;
    As shown in the example, the construct <varlist_name>[<subscript>]
    may be used to indicate the members of the list. In the example
    sp[0] is equivalent with sp1; sp[0][j] is equivalent with sp1[j].

    To address the sole member of a varlist of size 1,
    [<subscript>] should be omitted.
    example: float sp1[1k]; var def from; var set from sp1;
    Now from[j] is equivalent to sp1[j]. Do not use from[0][j] !

DEFsp command

defsp [<options>] <spectrum_declarator> ...
    <spectrum_declarator> may be of the forms:
    <spectrum_name> <size>
    <spectrum_name>[<size>]

    Define a spectrum, or several spectra.
    A spectrum is a structure containing a numerical array of
    length <size>, a label record, and some other information.

    When a spectrum is defined, the associated numerical array is
    automatically declared as a  p e r m a n e n t   cio variable.
    Thus, a spectrum, defined in a sub-program, remains defined when
    this sub-program is left.

    A spectrum may be deleted from memory by the command UNDEFsp.

    Valid options are -e -i, or a combination of these, e.g. -ie.
    If present, options should be given before other arguments.

    -e   Indicates that the associated numerical array exists already.
         If it doesn't, or has the wrong type or length, an error occurs.
         If the array exists it is promoted to a permanent variable.

    -i   The numerical array should be of type int.
         The default type is float.
         Spectra of type int should only be used for special 
         purposes, such as data acquisition.

deleting CIO variables

WIPE command

wipe <varname> ... wipe -l <varname> ... wipe -g <varname> ... wipe -P <varname> ...
    The command WIPE may be used to delete variables:
    If option -l is given, (default) only local variables can be deleted.
    If option -g is given, also deletion of global variables is allowed.
    If option -P is given, even 'permanent' variables may be deleted.
Do not use WIPE to delete CIO spectra, see UNDefsp command.

UNDefsp command

undefsp <spectrum_name> ...
    Delete a spectrum, or several spectra.
see also WIPE command.

KEep command

keep <varname> ...

keep -g <varname> ...

keep -p <varname> ...
    Option -g (default): make <varname> a global variable.
    Option -p : make <varname> a permanent variable.
The command KEEP is obsolete and will be removed in the future! The function of KEEP is taken over by the <level> argument of declaration commands (int, double, alias, var, ovar ...)

LIst command

list
    Displays a list of all currently defined cio variables.

CIO program flow


commands LOAD, LGO, RUN, and CALL.

LGO command

All of these commands are variations on the same theme: To read a script from a file and execute it.
    LGO  <filename>
         (load and go) reads and stores the script, and
         starts execution right away.

    LOAD <filename>
         reads the script and stores it in a CIO variable,
         but does not execute it yet.

    RUN  <subfile-name>
         loads and starts a subfile.

    CALL <CIO-variable-name>
         starts a CIO program, previously loaded by LOAD or LGO.
         If the variable is not found, look for a subfile of the
         same name in the last file accessed by LOAD, LGO, or RUN.
The main difference between these commands is the type of argument expected: A filename (load and lgo), a subfile (run), or a variable (call).

The choice between LGO and RUN is a matter of taste and convenience.

Using LGO one typically has a number of different files for different tasks. After the file has been read, by LGO or LOAD, its name can be used as a normal command.

Using RUN it is convenient to group different tasks into one larger file. Each task may be invoked with 'run <subfile>', thus the difference between a normal command and a script is larger.

OPTIONS The default behaviour may be modified by extra flags and parameters. Each option must be a separate(!) input argument, starting with a `-' character. Possibilities are:
    LOAD <filename> [-s <subfile>]  [-v <varname>] [-w|-c|-u] [-k] 
    LGO  <filename> [-s <subfile>]  [-v <varname>] [-w|-c|-u] [-k]
    RUN [<subfile>] [-f <filename>] [-v <varname>] [-w|-c|-u] [-k]
    CALL <varname>  [-s <subfile>] [-f <filename>] [-w|-c|-u] [-k]

    LOAD -L <filename>
    LGO  -L <filename>
    RUN  -L [-f <filename>]

    LOAD -r <filename>

    -f <filename>
       Search in the current directory and if this fails in directories:
         $HOME/pro
         $GROUP/pro
         $PRO
       for a file of name <filename>, or <filename>.pro.
       When the file is found, create a variable of type char, and,
       read and store the file in this array.

    -s <subfile>
       read a specified subfile, instead of the whole file, into an
       array of type char.
       In the text a subfile starts after a header line ####<subfile>
       and is terminated by the next line beginning with ####.

    -v <varname>
       Specify a name for the variable. If not given the name will be
       the same as <filename> or <subfile>, except for command RUN.

    -w, -c, -u
       What to do if a variable of the same name exists already.
    -w The old variable is first deleted.
       Use with caution, do not use this to replace a
       cio program that has a return pending!!!
    -c The old variable is kept and an error message is given.
    -u The old variable is used.

    -k Promote the cio variable to a permanent variable.

    -l The file name and all its subfile labels are listed.
       No file is loaded or executed.

    -r:The file name is registered as the default file for subsequent
       RUN commands.
       No file is loaded or executed.
FURTHER DETAILS.

A cio program loaded into variable <varname> can always be (re)started by typing <varname> as a command.
    LGO

      lgo <filename>.

      Load a cio program from disk, and start that program.
      Default for varname is the filename (minus directories and extension)
      Default behaviour when varname clashes is to replace the contents
      of the variable. If option -w is given this replacement is
      forced, even if the variable was declared at a higher context level.

    LOAD

      load <filename>.

      Load an array of type char, to be interpreted as a cio program,
      but don't start it yet. Defaults as for LGO.

      load -r <filename>.

      This option checks if the file can be found, and registers it as
      the default file for subsequent RUN commands.

    CALL

      call <varname>.

      Default for <subfile> is <varname>.
      Default for <filename> is the last file used by LGO or LOAD.
      Default behaviour when varname clashes is option -u.
      Thus if the variable exists already, it is not reloaded,
      otherwise, read the specified subfile, into an array of type char.
      Interpret this array as a cio program, and start that program.
      "CALL" is equivalent to "LGO -u -s".

    RUN

      run <subfile>.

      Default for <varname> is Run, or RunA, RunB ...
      Default for <filename> is the file attached to LU 15,
      or the last file specified via run -f .
      Default for <subfile> is the whole file.
      RUN rereads the script for every invocation.
      The command LOAD -r <filename> may be used to open a new
      file without running it yet. 

CALL command

call <varname> [-s <subfile>] [-f <filename>] [-w|-c|-u] [-k]
    The filename is usually given by a previous command LOAD, LGO
    or RUN, but may also be specified by the -f option.
For details, see LGO command

LOad command

load <filename> [-s <subfile>] [-v <varname>] [-w|-c|-u] [-k]

load -l <filename>

load -r <filename>

Search in the current directory and if this fails in the directories:
    $HOME/pro
    $GROUP/pro
    $PRO
for a file of name <filename>, or <filename>.pro.

When the file is found, create a variable of type char, and, read and store the file in this array, except for option -L. In contrast to LGO the filed is not executed right away, but can be started later on by typing the name of the variable.

The filename becomes the default in subsequent CALL commands.

see LGO command for an explanation of the options.

RUN command

run [<subfile>] [-f <filename>] [-v <varname>] [-w|-c|-u] [-k]

run -L

The subfile is read from a file, and executed as a cio program. If no subfile is specified, the whole file is read and executed. The (sub)file is stored in an cio variable, with default name Run.

This name may be overruled by the option -v <varname>.

If a filename is specified (option -f) that file becomes the default in subsequent RUN and CALL commands. The default RUN file may also be specified by a command LOAD -r, or, by opening LU 15.

If the option -L or -l (list) is given, the file name and all its subfile labels are listed. No file is loaded or executed.

A subfile starts after a header line ####<subfile> and is terminated by the next line beginning with ####.

see LGO command for further details.

loops and conditional statements

DO command

do <index> <first> <last>; [<statement> ...]; enddo

Execute the statements between DO and ENDDo repeatedly, with values for <index> of <first>, <first>+1, ... <last>. <index> should be a cio variable of type int. If <last> is smaller then <first> the statements are skipped.

In interactive mode: DO and ENDDo must be on the same line. In cio program: DO and ENDDo must be in the same module.

IF command

if <condition> ; <statement> ... ; endif

Statements between commands IF and ENDIF are only executed if <condition> is non-zero, and skipped when <condition> is zero.

In interactive mode: IF and ENDIF must be on the same line.

In a cio program: IF and ENDIF must be in the same module.

<condition> can be:
an integer expression
    Any non-zero result is 'true'.
a test on the existence or the type of a variable

of the form
    <option> <variable_name>
where <option> is one of the set:
    { =exist =d =f =i =c =v !exist !d !f !i !c !v } 
where d f i c and v indicate CIO variable types.

The test on type `v' works only for variables of type `v' with a size larger than 1, see VAR command.

comparison of two strings:
    =string <string1> <string2>
    !string <string1> <string2>
The <string>'s may be a literal string, a cio variable of type char, or an environmental variable.

example:
    if =s $HOST os91;
Keywords 'exist' and 'string' may be abbreviated, as in the example.

REPeat command

repeat <count>; [<statement> ...]; endrep
    Execute the statements between REPeat and ENDRep <count> times.
    If count is absent it is set to a very large number.

    In interactive mode: REPeat and ENDRep must be on the same line.
    In cio program: REPeat and ENDRep must be in the same module.

WHile command

while <condition> ; <statement> ... ; endwhile
    Statements between commands WHile and ENDWhile are repeatedly executed
    if, and as long as, <condition> is non-zero.

    In interactive mode: WHile and ENDWhile must be on the same line.
    In cio program: WHile and ENDWhile must be in the same module.
For a description of <condition>, see command IF command.

ENDDo command

see DO command

ENDIF command

see IF command

ENDRep command

see REPeat command

ENDWhile command

see WHile command

CIO program: exit, continue, debugging

ERROR command

error <text>
    Give an error message and exit cio program.

EXit command

exit
    Leave a cio program.
    Return to the calling program.

    example: if i > 99; exit; endif

    The command may not be used to exit a 'while', 'do', or 'repeat' loop.

Continue command

continue
    Continue cio program, that was interrupted, by '^C' or
    because STEP is enabled.

PAUSE command

pause
    Pause command input. For use in CIO programs.
    The program is suspended until a single character is typed in.

    If the character is a q the CIO program exits.

STEPp command

step yes

step no
    The commands 'step;' or 'step yes' enable step-wise execution of
    cio programs. After every line the cio program is interrupted.
    It may subsequently be continued by the command 'continue'.

    Command 'step no' disables the STEP feature.

    Note: In program GAUSS, use 'stepp' to distinguish from
          gauss command 'step'.

TRace command

trace yes

trace no
    The commands 'trace;' or 'trace yes' enable tracing of cio programs.
    When TRACE is enabled, every line of the cio program is echoed to the
    terminal before it is executed.

    Command 'trace no' disables the trace feature.

CIO array manipulationa


ADD command

add A B C
    C[i]:= A[i] + B[i]
    Add numerical arrays A and B, result in C.

ADDF command

addf A B C <factor>
    C[i]:= A[i] + (B[i] * factor)
    Add numerical array A and (B * factor), result in C.

DIFF command

diff A B <nsmooth>
    B[i]:= (derivative of A)[i]

    Calculate the 'derivative' of array A, result in B.
    The derivative is approximated by convolution with a differentiating
    filter function. The width of this filter, and hence the degree of
    smoothing, is determined by the value of <nsmooth>.

DIVS command

divs A B C
    C[i]:= A[i] / B[i]
    Divide each element of array A by corresponding element of B,
    result in C

INC command

inc A <first> <last> <expression>
    A[i]+= <expression>, i:= <first> to <last>
    Increment the elements <first> to <last> of numerical array A by the
    resulting value of the <expression>.

INPut command

input A <first> <last> (<value[i]>, i:= <first> to <last>)
    Read a value for each of the elements of the specified region of a
    numerical array A.
input A <text>
    Read a line of text into an array of type char.
    Special symbols such as `$', or a leading `?', are recognized.

INTEG command

integ A B
    B[i]:= sum (A[j], j:=0,i)

    Calculate the 'integral' of array A, result in B.

MOve command

move A B <offset_A> <offset_B> <length>
    Copy a selective region from array A to array B, with optional shift.

    The action can be represented as
      B[n+i]:= A[m+i], i:= 0 to <length> -1
      where m = <offset_A> and n = <offset_B>

    Defaults: <offset> = 0, <length> is maximally possible length.
    Restriction: A and B must be of the same type.

MULR command

mulr A <first> <last> <factor>
    Multiply each element of the specified region of numerical array A by
    a constant <factor>.
see also MULT command

MULS command

muls A B C
    C[i]:= A[i] * B[i]
    Multiply each element of A with the corresponding element of B,
    result in C.

MULT command

mult A B <factor>
    B[i]:= A[i] * factor
    Multiply each element of numerical array A by a constant <factor>.
    Result in B.
see also MULR command

NORM command

norm A <first> <last> <newsum>
    A[i]:= A[i] * normalizing_factor
    Multiply each element of numerical array A by a constant factor,
    chosen such that the sum over the specified region of A becomes
    <newsum>.

RESet command

reset <variable> ...
    Clears the specified variables. Most often used for numerical arrays,
    but may also be used for arrays of type char.
see also TRUNC command: TRUNC may be used to reset a subregion of an array.

SHift command

shift <oldsp> <newsp> <old ch1> <new ch1> <old ch2> <new ch2>
    Array newsp receives a shifted and/or stretched or compressed
    version of array oldsp.
    The transformation is such that a peak at old ch1 of old sp will be
    found at new ch1 of newsp, and similar for old ch2 and new ch2.
    To move a spectrum, give 'SHIFT oldsp,newsp;'. The defaults for
    old/new ch1 are -0.5, and for old/new ch2 they are length-0.5.
    Thus if defaults are taken, the spectrum is just stretched or
    compressed, depending on the relative lengths of old and new sp.

SUB command

sub A B C
    C[i]:= A[i] - B[i]

    Subtract numerical arrays A and B, result in C.

TRUNC command

trunc A <first> <last> <minimum> <maximum>
    Truncate the specified region of numerical array A. That is,
    each element A[i] smaller than <minimum> is set equal to <minimum>;
    each element larger than <maximum> is set equal to <maximum>.

TYPesp command

type A <first> <last> <yes/no>
    Type the contents, for the specified region, of a numerical array.
    After input of the array name, and the first and last channel numbers,
    the question asked is "suppress channel numbers, Yes or No?". If the
    answer is 'no', a channel number is output at the begin of each line.
type A
    In this form, the command type can be used for arrays of type char.

VLG command

vlg A B
    B[i]:= log10 (A[i])

    Calculate the 10-logarithm of each element of array A, result in B

VLN command

vln A B
    B[i]:= ln (A[i])

    Calculate the natural logarithm of each element of array A,
    result in B

VSQRT command

vsqrt A B
    B[i]:= sqrt (A[i])

    Calculate the square root of each element of array A, result in B

SPRint command

sprint <char variable> <text>
    The line of text, following the name of a variable of type char, is
    written to that variable. The variable should exist already.
    Special symbols such as `$', or a leading `?', are recognized.
    Numerical values may be converted to text with the
    $(expression,format) feature. Useful to store results of computations.

CIO arithmetic tools


calculations with simple variables

EVal command

eval <expression>
    Evaluate a numerical expression.
    Difference with KALK: the result is not printed.
see KALK command for rules for expressions.

KALK command

kalk <expression>
    Evaluate a numerical expression, and display the result.

    RULES FOR EXPRESSIONS:
    1. NUMBERS.
       Numbers may consist of the following parts

         sign | 0x | digits | . | digits | e | sign | digits | k

       where 0x means 'hexadecimal' and k means '*1024'

    2. OPERATORS.
       a. Arithmetic operators:     +     -     *     /     **  

       b. Relational operators:     >     <     >=    <=    ==    !=

       c. Assignment operators:     :=    +=    -=    *=    /=
          Assignment operators have the lowest priority, but ...
          all arithmetic and relational operators have equal priority!!!
          Relational operators yield 0 (=false) or 1 (=true).
          Notice there is no `=' operator, but ':=' instead!
    3. EXPRESSIONS.
       Expressions (except assignments) are evaluated from left to right.
       Brackets  ( and ) may be used to group sub-expressions.
       Embedded assignments must be surrounded by (). Example a:=b+(c:=5*d)
       End-of-line and semicolon `;' delimit expressions.
       Example: r:=a*b-(c*d)/(a-c)  [would be in C: r=(a*b-c*d)/(a-c)]

    4. FUNCTIONS. 
       The following functions are available:

          Sin Cos Tan ASin ACos ATan EXp LN SQrt

       Abbreviations are allowed, the required letters are  written
       in  uppercase.  Example:  sqrt(5)  may be shortened to sq(5).

    5. VARIABLES.
       Variables of type int, double or float may be used in expressions

    For more details give unix command 'man cio'

PRINTX command

printx <expression>
    The line of text following the command printx is evaluated as a
    numerical expression, and the resulting value is displayed.
see KALK command for rules for expressions.

calculations with arrays

see also CIO array manipulations

MINmax command

minmax A <first> <last>
    Calculate and type the minimum value, the maximum, the sum, and the
    average value, of the specified region of a numerical array.

    The results are stored in the following cio variables of type double
      spchmax, spchmin, spvalmax, spvalmin
    These variables will be created if they don't exist yet.

SUM command

sum A <first> <last>
    Calculate and type the sum over the specified region of numerical
    array A. The result is also stored in local variable spsum.

    Local variable spsum is created if it does not yet exist.

CTR command

ctr <spectrum> <mark[i]>, for i:=0 to 5
    Compute the area and centroid of a peak in a spectrum.

    <spectrum> is a numerical array.
    Further input is: 6 indices (channel numbers) of the array.
    Two background regions are defined by mark[0] to mark[1] and by
    mark[4] to mark[5]. The peak region is mark[2] to mark[3]. 

    A straight line is fitted through the background, and the centroid
    and area of the background corrected peak are calculated.

    Also calculated is an estimate of the width, i.e. 2.35 *
    the standard deviation of the distribution.
    If, (and only if!) the peak is gaussian, this correponds to
    the FWHM.

    Error estimates of these parameters are also calculated and
    printed.

    The last used input parameters are saved and used as
    default values for the next command CTR.

    The results are stored in the following cio variables of type double
      ctrsum, ctrbackg, ctrcentr, ctrwidth
    These variables will be created if they don't exist yet.

INTERPOL command

interpol <xvalue> <xarray> <yarray> <first> <last> <yresult>
    quadratic interpolation.

    xarray[first..last] is an array of x-values,
    yarray[first..last] an array of y-values.
    Both arrays xarray and yarray should be of type `f', and 
    monotonously increasing or decreasing.

    interpol returns the value of y corresponding to <xvalue>,
    i.e. y(xvalue).
    No extrapolation is done. If extrapolation is attempted the
    value at the the end of the range (either y[first] or y[last])
    is returned. Default values for <first> is 0, default for
    <last> is determined by the size of <xarray> and <yarray>.

    <yresult> is the name of a numeric cio variable where the result
    should be stored. This may be a subscripted variable, such as
    c[i+3]. If an empty name is given the result is stored in
    cio variable INTERPOL.

ZERO command

zero A <first> <last> <+/-/Both> <Noise level> [ <result array> ]
    Search the specified region of the array A, for zero crossings, 
    that is, places where sign(A[i]) differs from sign(A[i-1]).
    The parameter <+/-/Both> is a single character +, -, or B,
    and specifies the value that the first derivative should have,
    +, -, or 'does not matter'.
    A zero crossing is ignored if the absolute value of the difference
    between A[i] and A[i-1] is less then <Noise level>.
    The steepest zero crossing that meets these criteria is typed and
    also stored in a local variable named spzero.
    If <result array> , an existing array of type `f', say F, is
    specified, the number of zeroes found is stored in F[0], and the
    channel number where the zero crossings occur are stored in
    F[1] and further.

    Local variable spzero is automatically created if it does not exist.

CIO graphics


CURsor command

cursor
    Activate graphics cursor, and wait for user response in the form of a
    keyboard stroke or a mouse click.

    Prints the cursor coordinates in user units and in 'cm'.

    Further action depends on which key is pressed:

    keyboard `S' or `s'           stop graphics cursor input mode

    If the current picture is a 'y = f(x)' graph:
    keyboard `m' or middle mouse  set left border of display region
    keyboard `r' or right mouse   set right border of display region and
                                  redraw the display.
                                  [this does not work for option Xarray
                                  of command DIS if the x values were
                                  in decreasing order].

    If the current picture is a two-dimensional display:
    keyboard `m' or middle mouse  no action
    keyboard `r' or right mouse   redraw a small area around the cursor
                                  position.

DISplay command

display <spectrum> <first> <last> <display option> ...
    Display the specified spectrum region, channels <first> .. <last>.
    <spectrum> can be any numerical array.

    Possible options are:

      scale <min> <max>     specify the vertical scale
      xscale  <min> <max>   specify the horizontal scale
      log                   logarithmic display (vertical scale only)
      Xarray <xarray>       use <xarray> as x coordinates
                            if absent, x coordinate is channel nr.
      sym <symbol number>   display spectrum as symbols
                            (overrules grint style option)
      saf                   use current picture and axes
      symsize <size>        specify size, in cm, of symbols
      font <font number>    specify font number, 1..16
      style <style option>  <style option> is one of
                            LINE SYMbols DASH ERRorbars HIStogram
                            - For option ERRorbars the length of the
                              error bars is the square root of the
                              channel contents.
      title <text>          specify top title for graphs
For meaningful values of symbol numbers and font numbers, see GRint command.

see also GRint command, DIX command, CURsor command, PLOT command, and GEPPOST command.

See also: ENVironmental variables

DIX command

dix <spectrum> <dix option> ...
    Display the specified spectrum, in the current picture, using the
    same region and axes as specified through a previous display command.
    Possible options are:

      sym <symbol number>     display spectrum as symbols
                              (overrules grint style option)
      style <style option>    <style option> is one of
                              LINE SYMbols DASH ERRorbars HIStogram
For meaningful values of symbol numbers and font numbers, see GRint command.

see also GRint command, DISplay command, and CURsor command

GRint command

grint <grint option> ...
    Graphics options, and parameters for the display program grint.
    Possible options are:

    grint symsize <size>          specify size, in cm, of symbols
    grint font <font number>      specify font number, 1..16
    grint height <height> <angle> specify font size in cm, angle in deg 
    grint style <style option>    <style option> is one of
                                  LINE SYMbols DASH ERRorbars HIStogram
    grint title <text>            specify top title for graphs
    grint xtext <text>            specify text for x axis     
    grint ytext <text>            specify text for y axis     
    grint text cm/xy <x> <y> <text>:
                                  plot text at position (x,y)
                                  specify either 'cm' or 'xy' for
                                  coordinates in cm or xy-units.
    grint text cur <text> <cursor event>:
                                  plot text at position specified
                                  using the graphics cursor
    grint line <x1> <y1> <x2> <y2> cm/xy:
                                  plot a straight line from
                                  (x1,y1) to (x2,y2)
                                  specify either 'cm' or 'xy' for
                                  coordinates in cm or xy-units.
    grint plnames yes/no          specify whether to write the name of
                                  the spectrum above each graph.
                                  (default is yes).
    grint idev <idev>             specify type of graphics output device
                                  (usually the default values will do)
    grint display <DISPLAY>       specify X11 display.
    grint host <host name>        specify the host name.
                                  Only needed if 'remote grint' is used.
    grint stop                    Stops the program grint.
    grint post <PostScript filename>
                                  Same as command 'geppo'
    grint gfile <grint log file>  Record all grint commands. May be
                                  played back with "grint < file".
Note: the directory used if a relative pathname is given for <PostScript filename> or <grint log file> is the current directory from which program grint was launched.

Fonts, idev, and symbol numbers:
    Font 1 is the default font, and uses X11 and PostScript fonts.
    Fonts 2 to 16 are software generated Hershey fonts.
idev values (also displayed at the start-up of geppost):
     1 = display mode: Tektronix 401X / PC-emulation
    1000 = X11
    10 = file mode: GEP-plotfile (HPGL)
    40 = file mode: PostScript
    11, 41, 1010, 1040: display mode + (optional) plotfile
symbol numbers:
     0: square
     1: o
     3: +
     4: x
     5: diamond
    12: jojo
    13: |

PLOT command

plot
    Produce graphics output, on a plot file, of the current picture.
    May be given at any time after a DISPLAY command, and before the next
    DISPLAY command. Extra graphics output, such as due to DIX or
    GRINT TEXT, is also written to the plot file. The plot file, usually
    named plfile, may be processed later with program geppost

GEPPOST command

geppost <PostScript filename>
    Send the currently displayed picture to a PostScript file.
    Default for <PostScript filename> is 'plfile.ps'
    If the terminal used is an Xwindows terminal the PostScript file
    is displayed by program ghostview. If the result looks
    satisfactory a hardcopy can be made using the 'print' option
    of ghostview. The action of command 'geppost' is equivalent
    to the sequence:

      cio command 'PLOT'
      cio command 'GRINT STOP'
      unix command 'geppost' (with sensible defaults for parameters)
      unix command 'ghostview'

    Note: the directory used if a relative pathname is given for
    <PostScript filename> is the current directory from which
    program grint was launched.

MAP command

map <spectrum name> <first x> <first y> <nx> <ny> <ydim>
    Graphics display (false colour map) of a two-dimensional spectrum.
    <spectrum_name> refers to an array, in which the value f(x,y) is
    stored in element x * ydim + y, where x and y are integers
    ranging from 0 upwards. 
    The range (x = firstx .. firstx+nx-1, y = firsty .. firsty+ny-1)
    of the spectrum is displayed.

    Options for MAP may be set by command MAPOPT

MAPOPT command

mapopt <mincounts> <maxcounts> <mincolor> <maxcolor> <ncolors> <linlog>
    Provide options for command MAP.

    <mincounts> and <maxcounts> specify two values f(x,y) to be
    associated with colors <mincolor> and <maxcolor>.
    <mincolor> and <maxcolor> are integers in the range [0..31],
    with 0 = white, 31 = black.
    If <mincount> and <maxcount> have the same value, the minimum
    and the maximum of the displayed values f(x,y) is used.

    <ncolors> is the number of subregions, each with its own color,
    in which to divide the region given by <mincounts> and <maxcounts>.
    <ncolors> should not be greater then abs(<maxcolor>-<mincolor>).

    <linlog> is a flag with values 0 (linear display) or 1 (logarithmic).

SLICE command

slice <x1> <y1> <x2> <y2> <display option>...
    Presumes that a previous MAP command was given and takes the
    parameters <spectrum name> and <ydim> from there.

    Take a slice through the function f(x,y) for a straight line
    through the points (x,y) = (x1,y1) and (x2,y2), and show as
    a one-parameter graph,


see DISplay command.

REDRaw command

redraw
    Redraw the current picture.
    May be used when the picture got clobbered due to overlapping
    windows.

CIO system commands


CDIR command

cdir <directory>
    Change working directory.

    Default for <directory> is the current working directory.
    Thus 'cdir ;' prints the name of the current directory.

DIR command

dir <arguments>
    Display directories, as specified by the arguments.
    In Unix "ls" is called, in OS9 "dir" is called.

EDit command

edit <filename>
    Edit a file.
    The file is processed by the program specified in environmental
    variable $EDITOR, or if this variable is not found, by 'vi'.

MORE command

more <filename>
    View a file.
    The file is processed by the program specified in environmental
    variable $LIST, or if this variable is not found, by 'more'.

SHell command

shell
    Fork a shell.
    The current program is suspended an a new shell is started.
    When the user logs out from this shell the current program is resumed.


See also: ENVironmental variables

SLEEP command

sleep <seconds>
    Wait the specified time, before proceeding with the program.
    This sleep may be interrupted by a keyboard signal (ctrl-C),
    or by other signals (e.g. dmidma ready).

STOP command

stop
    Stop the program and return to the shell.

SYStem command

system <shell_command>
    Read a line of text, then execute this line as a shell command line.

TIMe command

time [<variable>]
    Display the date and time

    If <variable> is given it should specify an existing numerical
    cio variable. The number of seconds, elapsed since the start of
    the program, is assigned to this variable.

CIO console input/output


CLEAR command

clear
    clears the terminal screen

LOG command

log OFF/ON [<logfile_name>]
    Turn logging ON or OFF.
    When on, screen output is also written to a log file [LU 14].

    The name of the log file can be specified in various ways:
    -  when starting up the program, e.g. 'control -l <logfile_name>',
    -  by a separate command 'open 14 <logfile_name> write ascii',
    -  or via a command 'log on <logfile_name>'.

    The <logfile_name> argument is only needed if the logfile name was
    not specified before.

    Note1 Only input/output via routines from the CIO library are
          captured. Output from other routines (e.g. printf(),
          or Fortran WRITE statements) will not be logged.
          Also output from commands that fork an external process
          (such as 'more') will not be logged.
    Note2 command 'log <logfile_name>' works the same as
          'log ON <logfile_name>'.

History command

history ;

history <filename>

history -s yes/no
    Print the last portion of the keyboard input (the 'history').
    If no <filename> is given the history is written to the screen.
    If <filename> is given, the history is written to the file,
    overwriting its previous contents (if any). Such a file is
    a useful basis for the creation of a cio program.

    The history is not an exact copy of the input, but instead,
    regrouped to 'one line per command'.

    The form 'history -s' controls the way empty default input lines are
    represented in the history. After '-s' the options are
    "Yes": empty default lines are substituted by the default value.
           This is the default behaviour after starting the program.
    "No":  empty default lines are represented as empty arguments.
    This only affects the future 'history'!

PRint command

print <text>
    The line of text following the command print is echoed to the terminal.
    Special symbols such as `$', or a leading `?', are recognized.
    Numerical values may be converted to text with the $(expression,format)
    feature. Useful to output results of computations.

SILENT command

silent yes

silent no

After command 'silent yes' output to the screen is suppressed. The screen output is resumed by command 'silent no', and also if an error in a cio program occurs.

Note. Only the output via standard cio output routines is intercepted. Output from Fortran write statements is not affected. A more rigorous suppression of console output may be obtained using the ALTIO command.

MENU command

menu
    Start up the graphical user interface 'showmenu', and replace the
    standard input stream (the terminal keyboard) by input from this
    interface. When program 'showmenu' is terminated, the standard
    input is resumed from the original terminal.
    If command menu is given in program 'control' on an OS9
    system some preparations are necessary:
    - on the X11 host computer, command 'svc' should given.
    - In control, the host should be defined with the command
      'grint host <hostname>'.

    Mouse buttons: left = select menu option
                   middle = go to main menu
                   right  = give help on command
                            (if a valid command is clicked on)
see also Showmenu help.

To scale the menu window, or use an alternate GUI, see ENVironmental variables

ALTIO command

altio <input> <output>
    Redirect standard input and output.

    <input> and <output> are names of a device or pseudo-device. 
    They may be 'named pipes', enabling the current program to
    work in conjunction with a program that generates the input stream. 

    Default values for each of the parameters <input> and <output> is
    the original terminal. Therefore the command "altio;" restores
    stdin and stdout to their original state.

    Notes. It is possible to redirect standard input to a disk file with
           ALTIO. The command LGO is preferred, however.

           To suppress all console output one may use the command
           "altio ,, /dev/null"
           (where /dev/null is the null device, in OS9 use /nil).
           However in that case one may also lose error messages.

CIO file input/output


CLose command

close <lu>
    Close a file, and the associated 'logical unit number' <lu>.

DLU command

dlu
    Display the 'logical units' (LU) in use, and the associated file names

FPRint command

fprint <lu> <text>
    The line of text following the number <lu> is written to the file
    associated with that LU number.
    Special symbols such as `$', or a leading `?', are recognized.
    Numerical values may be converted to text with the $(expression,format)
    feature. Useful to output results of computations.

IMPort command

import <lu> <N_Y_arrays> <X_array> <Y_array1> (<Y_array2> ...)
    Read Ascii data in the format as used by program xgraph.
    The first column of data is read into <X_array>, further
    columns into <Y_array1>, <Y_array2> ... <Y_arrayN>.

Open command

open <lu> <file> <Read/Write> <filetype>
    Open a file, and associate it with a 'logical unit number' <lu>.

      <lu>: an integer in the range [0..15]. In other commands
            the file will be addressed by this number. Certain values
            have special applications:
            LU 15 : cio program file for command RUN
            LU 14 : log file

    File name expansion is applied to <file>:
    ~ is interpreted as the current home directory,
    ~<user> is interpreted as <user>'s home directory (not in OS9),
    $<string> is interpreted as an environmental variable.

    The parameter <Read/Write>, with options Read and Write, specifies
    'read only' permission or 'read and write' permission.

    The parameter <filetype> has options
       Ascii       The file contains Ascii text
       Spectrum    The file is a packed binary spectrum file
       PE          The file is a packed binary spectrum file in PE format.
                   Should be used if the file was made on the PE computer.
                   Option PE is not permitted in combination with Write.

    If the file does not exist, and Write was specified, a new file is
    created. If the file is of type Spectrum it is also initialized.

RDAscii command

rdas <LU> <Narrays> <Nchannels> <sp_name> ...
    rdas <LU> 0

    rdas <LU> -1 <string>

    Read an Ascii coded file, associated with LU,
    and decode as numerical data.
    Somewhat more versatile then command IMPORT.

    If Narrays > 0, the next line, and as many following lines as
    needed, are interpreted as ascii coded numeric data.
    The numbers read are stored in the specified arrays.
    The ordering of the data in the file should be:
    Narrays contents for channel number 0,
    ....
    Narrays contents for channel number (Nchannels - 1).

    If Narrays = 0 (default), one line is read and printed.
    If Narrays < 0, a string is asked, and the file is scanned for
    a line starting with this string. The comparison is not sensitive
    to case, and leading spaces are ignored.

    Note: The file associated with LU is not rewound by this command.

REWind command

rewind <lu>
    Rewind the file, connected to logical unit <lu>. 
    Useful in combination with command RDAS.

Xport command

xport <lu> <xflag> <nspectra> <spectrum_name> (<spectrumname> ...) <first_channel> <last_channel>
    Write data in the Ascii format used by program xgraph.

    <xflag> refers to the question 'Use channel nrs as x-coord',
            valid options for <xflag> are Yes and No.
            If Yes nspectra spectrum_names are asked
            If No nspectra+1 spectrum_names are asked,
            the first one is the X spectrum.

CIO spectra


SPList command

splist

Display the names and length of currently defined spectra. see DEFsp command and UNDefsp command.

PLAB command

plab <spectrum_name>
    Show the contents of the labelrecord of a spectrum in memory.

PUT command

put <spectrum> <lu> <factor> <notes>
    write a spectrum to a file

    <spectrum> is the name of the spectrum in memory
    <lu>       specifies the file
    <factor>   is an integer scaling factor. In the file the numbers are
               represented as integers; <factor> is the multiplier applied
               before conversion to integers. It should be large enough to
               prevent unwanted rounding, and not so large that any number
               exceeds the integer capacity (= 2**31, about 2E9).
               Example: if <factor> = 1000, numbers are accurate to 0.001.
               If <factor> = -1, this conversion does not take place and
               numbers are stored in floating point representation.
               This is an inefficient use of PUT.
    <notes>    is a line of text, 128 characters maximum, stored with the
               spectrum.

Get command

get <spectrum> <seqnr> <lu>

Read a spectrum from the file associated with <lu>, see Open command.
    <seqnr> specifies the sequence number in this file.
    <spectrum> specifies the name of the spectrum in memory, and
    must be the name of a previously declared spectrum,
see DEFsp command.

LABGET command

labget <spectrum> <label field> <variable>
    copy parameters of a spectrum label to cio variables.

    <spectrum>: the name of the spectrum whose label should be accessed.
    Possible options for <label field> are Timers/Rvars/Notes
    Timers: <variable> must be an int array of size 5 or larger.
    Rvars:  <variable> must be a double or float array of size 16 or larger.
    Notes:  <variable> must be a char array of size 128 or larger.
    Length: <variable> must be int

    The contents of <variable> are copied from the corresponding
    field of the spectrum label, i.e.:
    Timers: seconds, "real time", "live time 0" ... "live time 2".
    Rvars:  16 float numbers.
    Notes:  a line of notes.
    Length: length of original spectrum

LABlst command

lablst <lu> <seqnr> <nspectra> <Short/Full>
    List labels of spectra on the file associated with <lu>.
    <seqnr> specifies the first sequence number in this file.
    <nspectra> specifies the number of labels to be listed.
    <Short/Full> is a flag that specifies the amount of information
                 to be listed for each spectrum.
See also the Open command.

LABSET command

labset <spectrum> <label field> <variable>
    copy parameters from cio variables to a spectrum label.

    <spectrum>: the name of the spectrum whose label should be accessed.
    Possible options for <label field> are Timers/Rvars/Notes
    Timers: <variable> must be an int array of size 5 or larger.
    Rvars:  <variable> must be a float or double array of size 16 or larger.
    Notes:  <variable> must be a char array of size 128 or larger.

    The contents of <variable> are copied to the corresponding
    field of the spectrum label, i.e.:
    Timers: seconds, "real time", "live time 0" ... "live time 2".
    Rvars:  16 float numbers.
    Notes:  a line of notes.

    Note. The label field "Notes" is overwritten by command PUT. 

SPCOPY command

spcopy <input_LU> <output_LU> <first> <last>
    Copy spectra from one file to another.
    <input_LU> and <output-LU> should have been opened beforehand,
    and assigned to 'spectrum files'.
    <first> and <last> are the first and last sequence number
    to be copied of the input file.

» back to old software