VMMCRE(3)                        VERSION 1.0                         VMMCRE(3)

NAME
        VMMCRE - create or modify a variable for VMM.

USAGE

        key = vmmcre(varname,lslice,nslice,attrib)
        integer vmmcre
        integer key, lslice, nslice
        character*8 varname
        character*40 attrib

DESCRIPTION
        VMMCRE is an integer  function used to create  variables for use  with
the VMM (Virtual Memory Management) package. VMMCRE may also be used to modify
some of the attributes given to a variable. Upon successful completion, VMMCRE
returns a key pointing at  the first of the  nslices of the variable  created.
In order to access subsequent slices, the  user must add to the value of  key,
the number of  the slice desired:   For  example, key+2 points  to the  second
slice while key+3 points to the third slice.  Both key and key+1  point to the
first slice.

ARGUMENTS

        varname    -(input) user defined name used to identify a variable.

        lslice     -(input) dimensions  of each  piece  of the  variable.  For
                    example, lslice  could be  the dimensions ni*nj of a  grid
                    at a given level. lslice is given in words.

        nslice     -(input) number of  pieces of size  lslice.  For  instance,
                    the number of levels.

        attrib     -(input) user  defined list of  attributes associated  with
                    the variable. Valid attributes are: 
                    SAVE= ,CL= ,W= ,MUSTEXIST,SIZE= ,INIT=
                    SAVE=Y/N    when this attribute is set to the value Y, the
                                variable will be written to disk  before being
                                ejected  from  memory  by  the  VMM   package.
                                Default value is N.

                    CL=n        this attribute is used to categorize variables
                                according to their use. Values from 1 to 9 are
                                allowed.  The value given to CLASS is used  to
                                determine to  which of  the VMM  data files  a
                                variable will be saved.  Default value is 1.

                    W=n         this attribute  serves to  quantify the  usage
                                intensity of a variable.   The more  intensely
                                used variables should  be given higher  WEIGHT
                                values than  less frequently  used  variables.
                                Variables are expelled from memory in order of
                                increasing WEIGHT  when additional  memory  is
                                required for loading a variable.  Valid WEIGHT
                                values range from 0 to 9. Default value is 0.

                    SIZE=n      this attribute is used  to indicate whether  a
                                variable is  of type  REAL*4 or  REAL*8.  When
                                SIZE is  set  to a  value  other than  8,  the
                                variable will be of type REAL*4. 
                                SIZE=0:  REAL*4  [default] 
                                SIZE=8:  REAL*8

                                It goes without saying that this attribute has
                                no effect when compiling in 64 bit mode.

                    MUSTEXIST   the presence  of this  attribute indicates  to
                                the VMM package that the variable must already
                                exist during a   restart (i.e.   the  variable
                                was saved to disk at  the end of the  previous
                                execution).  During restart, the absence of  a
                                variable with  the  MUSTEXIST  attribute  will
                                result in the  premature end  of execution  of
                                the program.

                    INIT=n      this attribute indicates  to which value  each
                                slice of a variable  must be initialized  when
                                loaded for the first time  or after a call  to
                                VMMFGT .  Legal values are 0, R and -. 
                                INIT=0 :  initialize the field to zero.
                                INIT=R :  initialize   the   field  to     the
                                          machine's  biggest  floating   point
                                          value. 
                                INIT=- :  no initialization is performed 
                                By default, no initialization is done.

                    NOTE:       When VMMCRE  is  used  to  modify  an  already
                                existing   variable,   only   the    following
                                attributes may be changed:  SAVE, INIT, CL and
                                W.

EXAMPLE

     key1= vmmcre('VAR_1',ni1*nj1*nk1,1,'CLASS=1,WEIGHT=9,MUSTEXIST,SAVE=Y')
     key2= vmmcre('VAR_2',ni2*nj2,nk2,'CLASS=3,WEIGHT=5,INIT=R,SAVE=Y')

AUTHORS

        J.Caveen, M. Lepine, M.Roch - RPN

NOTES
        You will notice from the first  example above, that it is possible  to
define a variable having one (or  more) three dimensional slice(s).  In  fact,
this should be done whenever  there is no real need  to break a variable  into
smaller multiple slices since  bigger  slices are handled more efficiently  by
VMM.

        Errors that will cause a premature end of program execution:

              -no previous call to VMMALLC
              -password is set (System is locked)
              -variable must exist when in restart mode

        Latest revision, November 1993

        See   also   vmmallc(3),   vmmatt(3),vmmcpk(3),vmmdbg(3),   vmmdmp(3),
vmm_example(1),  vmmfgt(3),   vmmget(3),  vmmhpa(3),   vmmhpd(3),   vmmint(3),
vmmintro(1), vmmcks(3), vmmlck(3), vmmlod(3), vmmpwd(3), vmmrls(3), vmmsav(3),
vmmuld(3), vmmulk(3), vmmuln(3).