HomeStartingEnvironmentDBMSVisualPQLProceduresSQLFormsHost/APIIndex
Host/API homecontents start chapter top of pagebottom of pagenext page index Detailed Routine Descriptions

homecontents start chapter top of pagebottom of pagenext page index

ZAFTER

ZAFTER, Start Creation of an AFTER Key
ARGS:   DUMMY
DESC:   ZAFTER starts the creation of a DBMS key. It creates
        an "AFTER" key.  That is, a key which will be used
        to select all CIR/record's whose key comes after the
        key that is currently being defined.  It is normally
        called after one of the case/record level
        initialisation routines in order to initialise the
        key selection options for case or record loops.
        Following a call to ZAFTER, key definitions routines
        are called to enter values into the key one at a
        time.  For a case key only one call is made to enter
        the value of the case id. For record keys, the case
        id is assumed to be the same as the last CIR
        retrieved or restored. Therefore, only the record
        sort ids have to be inserted into the key.  The
        sort-ids must be entered in the order of their
        appearance in the key being created.
ENTRY:  DUMMY (I * 4 ) Dummy argument needed to make a
        syntactically correct FORTRAN function. Should
        always be 0.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZATTR

ZATTR,  Equivalence Long and Short Filenames
ARGS:   FILENM,STRING,STRLEN
DESC:   ZATTR performs the equivalent of the ATTRIBUTE
        command in DBMS.  Currently it allows the
        equivalencing of a FILENAME (short 1-8 character
        name) and a long (quoted filename).  After ZATTR is
        called use of the short name will reference the file
        specified by the long name.
ENTRY:  FILENM (N * 8) Short name or "ldi" specification of
                       ATTRIBUTE command.
        STRING (B * n) Long name or string appearing within
                       quote marks of DSN = subparameter of
                       ATTRIBUTE command (without quotes).
        STRLEN (I * 4) Number of characters in argument STRING.
EXIT:   None.
RETURN: The location of the entry in the ATTRIBUTE table
        (small positive integer).

homecontents start chapter top of pagebottom of pagenext page index

ZBEGIN

ZBEGIN, Start Creation of Starting Key
ARGS:   DUMMY
DESC:   ZBEGIN is called after a new level in a retrieval
        block is started, and prior to retrieving the first
        CIR/record.  It allows the user to start creating a
        key which will be used as the first key to be
        processed at the level.
ENTRY:  DUMMY (I * 4 ) Dummy argument needed to make a
                       syntactically correct FORTRAN
                       function. Should always be 0.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZBLTRC

ZBLTRC, Store Blank in Variable if Blank Is Missing or Undefined
ARGS:   VDESC
DESC:   ZBLTRC stores a blank into a variable.  If the blank
        is a missing value, then it is stored as the
        respective missing value.  For other values, an
        error is returned.
ENTRY:  VDESC (D * 8) The descriptor for the variable to be set
                      to blank.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZCACHE

ZCACHE, Set and Retrieve Cache System Control Parameters
ARGS:   FNC,VAL
DESC:   ZCACHE is used to set and retrieve cache system-control
        parameters.
ENTRY:  FNC (I * 4)  The control function code.
        VAL (I * 4)  The new value or dummy.
EXIT:   None.
RETURN: Negative if error, if not as described below:
        FNC   VAL     Return code   Description
          1     0            0      Disable cache
          1     1            0      Enable cache
          2     n            0      Set table space = n
          3     n            0      Set number of buffers= n
          5     0            0      Set "write when" mode
          5     1            0      Set "write thru" mode
         11     x            0      Return for cache disabled
         11     x            1      Return for cache enabled
         12     x            n      Return table space
         13     x            n      Return number of buffers
         15     x            0      Return for "write when" mode
         15     x            1      Return for "write thru" mode

homecontents start chapter top of pagebottom of pagenext page index

ZCALL

ZCALL,  Call HOST Function and Check Its Return Value
ARGS:   ZFUNC, PRTFL, ENDFL, LBLNO, CODE1, CODE2
DESC:   ZCALL enables the programmer to write a more concise
        and easier to maintain program by performing the
        testing of the return codes and the eventual error
        processing. First, ZCALL calls ZFUNC.  If ZFUNC
        returns a positive value, zero or a negative value
        that is between CODE1 and CODE2, ZCALL returns
        immediately.  If ZCALL does not return immediately,
        the following action is taken: PRTFL is 0, nothing
        is printed in the log file.  PRTFL is 1, a brief
        message is printed that indicates the subroutine
        name, the error code, and the statement label LBLNO.
        If it is 2, the short message is printed followed by
        the complete error message on the next line.  If
        ENDFL is 0, ZCALL returns. If it is -1, the full
        HOST system is shutdown but the subroutine returns.
        If it is -2, the full system is shutdown and the
        subroutine exits directly.  If it is n(positive
        integer), the current stream (user) is shutdown, the
        system switches to user n and the subroutine
        returns.
ENTRY:  ZFUNC (I * 4)  Z function to call, with all its arguments.
        PRTFL (I * 4)  Print flag, controls if and how a message is
                      printed.
        ENDFL (I * 4)  End flag, controls the flow of control after
                      an error has occurred
        LBLNO (I * 4)  Statement label number.
        CODE1 (I * 4)  Error code (Negative 4 digit number or 0).
        CODE2 (I * 4)  Error code (Negative 4 digit number or 0).
EXIT:   None.
RETURN: Return value of ZFUNC.

homecontents start chapter top of pagebottom of pagenext page index

ZCCNT

ZCCNT,  Initialise COUNT Case-processing Block for Current Database
ARGS:   TCASES,INDEX,START
DESC:   ZCCNT is the first of a series of routines that can
        be called in order to create "PROCESS CASE" block
        with the COUNT option. The purpose of this call is
        to initialise the retrieval stack with the required
        information.  The arguments correspond to the
        arguments on the COUNT = clause of the PROCESS CASE
        command in RETRIEVAL.  ZCCNT can also be used to
        process ALL cases by setting INDEX and START to 1
        and TCASES to -1.
ENTRY:  TCASES(I * 4) Total number of cases to be processed.
        INDEX( I * 4) Every INDEX the case will be processed.
        START (I * 4) Starting with the START th case in the
                      database.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if
        error.

homecontents start chapter top of pagebottom of pagenext page index

ZCCNTD

ZCCNTD, Set Current Database and Initialise COUNT Case-processing Block
ARGS:   TCASES,INDEX,START,DBNAME
DESC:   ZCCNTD is called to make DBNAME the current database
        and to start creating a "PROCESS CASE" block with
        the COUNT option.  The purpose of this call is to
        initialise the retrieval stack with the required
        information.  The arguments correspond to the
        arguments on the COUNT = clause of the PROCESS CASE
        command in RETRIEVAL. the database.  ZCCNTD can also
        be used to process ALL cases by setting INDEX and
        START to 1 and TCASES to -1.
ENTRY:  TCASES(I * 4) Total number of cases to be processed.
        INDEX (I * 4) Every INDEX th case will be processed.
        START (I * 4) Starting with the START the case in
                      the database.
        DBNAME(N * 8) The database name to be processed by
                      this case loop.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZCDEL

ZCDEL,  Delete Current Case from Database
ARGS:   DUMMY
DESC:   ZCDEL is called after a CIR is retrieved to delete
        the current CIR and all its associated data records.
ENTRY:  DUMMY (I * 4) Dummy argument needed to make a
                      syntactically correct FORTRAN
                      function. Should always be 0.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZCEXIT

ZCEXIT, Terminate Case Processing Level
ARGS:   OLDSEED
DESC:   ZCEXIT is called to terminate a case level and pop
        back one level in the retrieval stack.
ENTRY:  None.
EXIT:   OLDSEED(I * 4) The current value of the seed is
                     returned to this argument if this was a
                     PROCESS loop with the SAMPLE option.
                     Otherwise the value is undefined.

homecontents start chapter top of pagebottom of pagenext page index

ZCFIND

ZCFIND, Find Case with Given Key
ARGS:   OPT, LFLAG, DIRECT, BEGIN
DESC:   ZCFIND finds an existent case or creates a new case
        with a previously specified key.  It is called after
        routine ZCGDMY or ZCRDMY has created a dummy block
        and after putting values into the caseid variable in
        CIR and ( if OPT is 1 ) in other common variables.
        When ZCFIND is executed, the value of the caseid is
        used to create the case key.  If the caseid variable
        is undefined, then the dummy block is converted into
        a PROCESS CASE ALL block and the next or previous
        CIR is read.  Otherwise, the dummy block is
        converted into a CASE IS block and: a)  if OPT is 1,
        then the undefined values are updated to the values
        read from the found CIR or b) if OPT is 2 the full
        current CIR is replaced by the read CIR.
ENTRY:  OPT (I * 4)   Controls the update/replace of the CIR.
        LFLAG (I * 4)  Lock flag.
        DIRECT (I 4)  If PROCESS CASE then use 1 to get the
                      next case and -1 to get the previous
                      case.
        BEGIN (I * 4)  Should be 0 to set the range to all
                      cases (starting with the first case in
                      the database) and I to convert to a
                      PROCESS CASES ALL block (if caseid is
                      undefined) or CASE IS block (if
                      caseid is defined).
EXIT:   None.
RETURN: -4001 if CIR not found;
        -3026 if CIR is found but is incompatible locked;
        +0003 if CIR is found and has a compatible lock;
        +0004 if CIR is found and available for CASE IS;
        +0000 if CIR is found and available for PROCESS
              CASE;
        negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZCFRST

ZCFRST, Start-up Case Level Block and Get First CIR
ARGS:   LFLAG
DESC:   ZCFRST is called after case-block initialisation and
        all key creation, and after all key-definition
        routines.  It starts-up the case block and gets the
        first CIR that meets all of the selection options
        previously specified.  No other case-level function
        can be called until this block is successfully
        executed.  After ZCFRST is executed, no further key
        definitions may be made.  The system checks that the
        current lock flag is compatible with LFLAG and if it
        is, LFLAG becomes the new lock.
ENTRY:  LFLAG(I * 4)            The lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZCGDMY

ZCGDMY, Initialise Dummy Case-level Processing
ARGS:   DBNAME
DESC:   ZCGDMY starts up a case block without accessing the
        database.  After ZCGDMY has been called and values
        put in the CIR, ZCFIND should be called to create
        the key and find the CIR.  If DBNAME is not all
        blanks, it is made the current database.
ENTRY:  DBNAME ( N * 8 ) Database name (all blanks means use
                         current database
EXIT:   None.
RETURN: Stack level of the newly created block, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZCIS

ZCIS,   Initialise CASE IS Block for Current Database
ARGS:   NEW,OLD
DESC:   ZCIS is the first of a series of routines that can
        be called in order to create "CASE IS" block.  The
        purpose of this call is to initialise the retrieval
        stack with the required information.
ENTRY:  NEW (I * 4) It is 1 if a new case can be created by
                    this level, otherwise it is 0. The
                    database must have been opened for
                    update to allow a value of 1.
        OLD (I * 4) It is 1 if an old case can be accessed
                    by this level, otherwise it is 0.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZCISD

ZCISD,  Set Current Database and Initialise CASE IS Block
ARGS:   NEW,OLD,DBNAME
DESC:   ZCISD is called to make DBNAME the current database
        and to start creating a "CASE IS" block.  The
        purpose of this call is to initialise the retrieval
        stack with the required information.
ENTRY:  NEW (I * 4) It is 1 if a new case can be created by
                    this level, otherwise it is 0. The
                    database must have been opened for
                    update to allow a value of 1.
        OLD (I * 4) It is I if an old case can be accessed
                    by this level, otherwise it is 0.
        DBNAME(N*8) The database name to be processed by the
                    level being created.
EXIT:   None.
RETURN: Stack location of the new block, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZCLAST

ZCLAST, Start Case-level Block and Get Last CIR
ARGS:   LFLAG
DESC:   ZCLAST is called after case-block initialisation and
        all key creation, and after all key-definition
        routines.  It starts-up the case block and gets the
        last CIR that meets all of the selection options
        previously specified.  No other case-level function
        can be called until this block is successfully
        executed.  After ZCLAST is executed, no further key
        definitions may be made.  The system checks that the
        current lock flag is compatible with LFLAG and if it
        is, LFLAG becomes the new lock.
ENTRY:  LFLAG (I * 4)   The lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZCLEAR

ZCLEAR, Clear Retrieval Stack for a Stream
ARGS:   USERNO
DESC:   ZCLEAR calls ZREXIT and ZCEXIT as often as needed
        and in the proper order, in order to clear all
        levels in the retrieval stack for the specified
        user.  ZCLEAR should be used to clear the stack when
        the current position is unknown.
ENTRY:  USERNO(I * 4) The stream number whose retrieval stack
        should be cleared.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZCLOCK

ZCLOCK, Return The Lock Type of the Case Level from
        Execution Stack
ARGS:   LFLAG
DESC:   ZCLOCK returns the lock type of the case level to
        which the innermost block in the execution stack
        belongs.
ENTRY:  None.
EXIT:   LFLAG (I * 4)   Lock type.
RETURN: 0 if the level is not write-locked. 1 if the level is write-locked.

homecontents start chapter top of pagebottom of pagenext page index

ZCNEXT

ZCNEXT, Get Next Case for Current Level
ARGS:   LFLAG
DESC:   ZCNEXT is called after case-block initialisation and
        all key creation, and after all key-definition
        routines.  It starts-up the case block and gets the
        next CIR that meets all of the selection options
        previously specified.  No other case-level function
        can be called until this block is successfully
        executed.  After ZCNF-XT is executed, no further key
        definitions may be made.  The system checks that the
        current lock flag is compatible with LFLAG and if it
        is, LFLAG becomes the new lock.
ENTRY:  LFLAG (I * 4)   The lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZCPREV

ZCPREV, Start-up Case Level Block and Get Previous CIR
ARGS:   LFLAG
DESC:   ZCPREV is called after case-block initialisation and
        all key creation, and after all key definition
        routines.  It starts-up the case block and gets the
        previous CIR that meets all of the selection options
        previously specified.  No other case-level function
        can be called until this block is successfully
        executed.  After ZCPREV is executed, no further key
        definitions may be made.  The system checks that the
        current lock flag is compatible with LFLAG and if it
        is, LFLAG becomes the new lock.
ENTRY:  LFIAG (I * 4)   The lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZCRDMY

ZCRDMY, Terminate Case-processing Level and Reset to
Dummy
ARGS:   DUMMY
DESC:   ZCRDMY terminates the processing of the current CIR,
        rewrites it to the database if necessary, and then
        resets the block to dummy.
ENTRY:  DUMMY (I * 4 ) Dummy argument needed to make a
                       syntactically correct FORTRAN
                       function. Should always be 0.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZCREST

ZCREST, Restore CIR from Database and Reset Lock Type
ARGS:   LFLAG
DESC:   ZCREST is called to replace the values of the common
        variables in the retrieval stack with the values of
        the common variables in the database.  Potentially,
        it can change the lock type of the CIR.
ENTRY:  LFLAG (I * 4)     The lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZCSAM

ZCSAM,  Initialise SAMPLE Case-processing Block
ARGS:   SAMPLE,SEED
DESC:   ZCSAM is the first of a series of routines that can
        be called in order to create "PROCESS CASE" block
        with the SAMPLE option.
ENTRY:  SAMPLE(R * 4) Sample size (SAMPLE).
        SEED (I * 4) Starting seed for random-number
                    generator. Same seed always produces the
                    same random selection sequence. Any odd
                    value can be used for the seed. See
                    routine ZCEXIT for obtaining the value
                    of the seed after the loop is finished.
EXIT:   None.
RETURN: Stack location of the new block, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZCSAMD

ZCSAMD, Set Current Database and Initialise a SAMPLE
        Case-processing Block
ARGS:   SAMPLE,SEED,DBNAME
DESC:   ZCSAMD is called to make DBNAME the current database
        and to start creating a "PROCESS CASE" block with
        the SAMPLE option.  The purpose of this call is to
        initialise the retrieval stack with the required
        information.
ENTRY:  SAMPLE(R * 4) Sample size (SAMPLE).
        SEED (I * 4)  Starting seed for random-number
                      generator. Same seed always produces
                      the same random selection sequence.
                      Any odd value can be used for the
                      seed. See routine ZCEXIT for obtaining
                      the value of the seed after the loop
                      is finished.
        DBNAME(N * 8) The database name to be processed by
                      this case block (all blanks means use
                      current database).
EXIT:   None.
RETURN: Stack location of the new block, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZCWRIT

ZCWRIT, Replace Modified CIR on Database and Lock of
        Block
ARGS:   LFLAG
DESC:   ZCNWIT is called to replace the database version of
        the CIR with the current version in the retrieval
        stack.  This process is performed automatically by
        the HOST routines when the next CIR is retrieved or
        the case level is terminated.  However the user may
        want to write the modified CIR to the database and
        change the lock for further processing.
ENTRY:  LFLAG (I * 4)     Lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZDESC

ZDESC,  Create Variable Descriptor
ARGS:   VDESC,RECTYP,VRNAME,LEVEL
DESC:   ZDESC builds-up a variable's descriptor. (Refer to
        the Machine Specifics documentation for
        additional information on descriptors.) ZDESC can be
        called once prior to entering a loop which
        references a variable.  This avoids the necessity of
        creating the variable descriptor for each loop
        iteration.  Unlike ZDESCD, the database name is not
        required.
ENTRY:  RECTYP(I * 4) The record type number to which the
                    variable belongs. Common variables are
                    indicated by setting this argument to
                    zero.
        VRNAME(N*8) The variable name.
        LEVEL (I * 4) Level in the retrieval stack where the
                    CIR/data record can be found. A zero
                    value indicates that when the descriptor
                    is used, the system should start with
                    the innermost level in the retrieval
                    stack and search outwards for the first
                    level which matches the database and
                    record type specified within the
                    descriptor. A negative value indicates
                    that the record is LEVEL levels out from
                    the innermost level. A positive value
                    indicates that the record is LEVEL
                    levels deep in the retrieval stack.
EXIT:   VDESC (D*8) Contains the descriptor for the variable
                    specified by the other arguments.

homecontents start chapter top of pagebottom of pagenext page index

ZDESCB

ZDESCB, Break Descriptor Into Four Integers
ARGS:   VDESC,DBNUM,RECTYP,VARNUM,LEVEL
DESC:   ZDESCB breaks a descriptor into 4 integers.
ENTRY: VDESC (I * 4) Contains the descriptor.
EXIT:   DBNUM (I * 4) The database number in HOST system.
        RECTYP(I * 4) The record-type number.
        VRNUM (I * 4) The variable number in record.
        LEVEL (I * 4) The stack level.

homecontents start chapter top of pagebottom of pagenext page index

ZDESCD

ZDESCD, Create Variable Descriptor
ARGS:   VDESC,DBNAME,RECTYP,VRNAME,LEVEL
DESC:   ZDESCD looks up a common or record variable name and
        returns the variable's descriptor.  Refer to the
        Machine Specifics documentation for additional
        information on descriptors.  ZDESCD can be called
        once prior to entering a loop which references a
        variable.  This avoids the necessity of creating the
        variable descriptor for each loop iteration.
ENTRY:  DBNAME(N*8) The database in which the variable
                    resides.
        RECTYP(I * 4) The record type number to which the vari-
                    able belongs.  Common variables are indi-
                    cated by setting this argument to zero.
        VRNAME(N*8) The variable name.
        LEVEL (I * 4) This indicates where the CIR/data record
                    can be found.  A zero value indicates
                    that when the descriptor is used, the
                    system should start with the innermost
                    level in the retrieval stack and search
                    outwards for the first level which
                    matches the database and record type
                    specified within the descriptor.  A
                    negative value indicates that the record
                    is LEVEL levels out from the innermost
                    level A positive value indicates that
                    the record is LEVEL levels deep in the
                    retrieval stack.
EXIT:   VDESC (D 8) Contains the descriptor for the variable
                    specified by the other arguments.

homecontents start chapter top of pagebottom of pagenext page index

ZDESCM

ZDESCM, Make Descriptor out of Four Integers
ARGS:   VDESC,DBNUM,RECTYP,VARNUM,LEVEL
DESC:   ZDESCM makes a descriptor from 4 integers.
ENTRY:  DBNUM (I * 4) The database number in HOST system.
        RECTYP(I * 4) The record type number. It cannot be 0
                      for a caseless database.
        VRNUM (I * 4) The variable number in record.
        LEVEL (I * 4) The stack level.
EXIT:   VDESC (I * 4) Contains the descriptor for the variable
                      specified by the other arguments.

homecontents start chapter top of pagebottom of pagenext page index

ZDETAL

ZDETAL, Find Location of File Control Block of DETAIL File
ARGS:   DUMMY
DESC:   ZDETAL returns the location in table ZERO of the
        file control block for the detail file for the
        current database.
ENTRY:  DUMMY(I * 4) Dummy argument.
EXIT:   None.
RETURN: Location of DETAIL file FCB.

homecontents start chapter top of pagebottom of pagenext page index

ZDTTKY

ZDTTKY, Enter a Date String into a Key
ARGS:   DATEST,LENGTH,DATEMP
DESC:   ZDTRKY is called after one of the key initialisation
        routines in order to insert the value of a date
        string into the next location of the key currently
        being defined.
ENTRY:  DATEST (B * n) Date string to insert into key.
        LENGTH (I * 4) Number of characters in strings DATEST
                       and DATEMP.
        DATEMP (B * n) String containing format for decoding
                       the date specified in DATEST.  Legal
                       characters are I(ignore), Y(year),
                       M(month), or D(day).  For
                       example 'MMIDDIYY'
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZDTTRC

ZDTTRC, Move Date into CIR/Record
ARGS:   DATEST,LENGTH,DATEMP,VDESC
DESC:   ZDTTRC transfers the value of a date string into a
        CIR or data record.
ENTRY:  DATEST (B * n) Date string to transfer to record.
        LENGTH (I * 4) Number of characters in strings DATEST
                       and DATEMP.
        DATEMP (B * n) String containing format for decoding
                       the date specified in DATEST.  Legal
                       characters are I(ignore), Y(year),
                       M(month), or D(day).
        VDESC (D * 8)  Variable descriptor of variable to receive
                       value.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZDTXIN

ZDTXIN, Convert Date String into Date Integer
ARGS:   DATEST,ORDINAL,DATEMP,LENGTH
DESC:   ZDTXIN converts a date encoded as a character string
        into a julian integer value.
ENTRY:  DATEST (B * n)  Date string to convert.
        ORDINAL (I * 4) First character in string DATEST to
                        use.
        DATEMP(B * n)   String containing format for
                        decoding the date specified in
                        DATEST.  Legal characters are
                        I(ignore), Y(year), M(month), or
                        D(day).  For example 'MMIDDIYY'
        LENGTH(I * 4)     Number of characters in strings
                        specified above.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZDTXKY

ZDTXKY, Enter Date String into Key
ARGS:   DATEST,ORDINAL,LENGTH,DATEMP
DESC:   ZDTXKY is called after one of the key initialisation
        routines in order to insert the value of a date
        string into the next location of the key currently
        being defined.
ENTRY:  DATEST  (B * n) Date string to insert into key.
        ORDINAL (I * 4) Starting byte number in area DATA to
                        transfer the value from.  For a
                        simple variable this value is 1.
        LENGTH (I * 4)  Number of characters in strings
                        specified above.
        DATEMP (B * n)  String containing format for
                        decoding the date specified in
                        DATEST.  Legal characters are
                        I(ignore), Y(year), M(month), or D
                        (day).  For example 'MMIDDIYY'
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZDTXRC

ZDTXRC, Move Date into CIR/Record
ARGS:   DATEST,ORDINAL,LENGTH,DATEMP,VDESC
DESC:   ZDTXRC transfers the value of a date string into a
        CIR or data record.
ENTRY:  DATEST (B * n)  Date string to transfer to record.
        ORDINAL (I * 4) Starting byte number in area DATA to
                        transfer the value from. For a
                        simple variable this value is 1.
        LENGTH (I * 4)  Number of characters in strings
                        specified above.
        DATEMP (B * n)  String  containing format for
                        decoding the date specified in
                        DATEST. Legal characters are
                        I(ignore), Y(year), M(month), or
                        D(day).
        VDESC (D * 8)   Variable descriptor of variable to
                        receive value.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZEND

ZEND,   Terminate Processing of HOST
ARGS:   TSUSED
DESC:   ZEND terminates a HOST run.  It must be called after
        using ZENDDB to close all the databases still open
        for the run. ZEND ensures that all information
        related to the databases are properly handled.  All
        internal tables are cleared and any scratch files
        used are closed and returned.
ENTRY:  None.
EXIT:   TSUSED (I * 4)  The amount of table space actually used
      in the current job is returned by HOST via
      this argument. If the value is negative then
      during the run some tables had to be
      swapped to a scratch disk file in order to
      continue processing. In this case addition-
      al memory should be allocated to reduce
      the swapping time the next time the
      program is used.

homecontents start chapter top of pagebottom of pagenext page index

ZENDDB

ZENDDB, Terminate the Use of Database
ARGS:   DBNAME
DESC:   ZENDDB terminates the use of a specified database.
        The files are updated and closed.  The space
        associated with each database is not freed until
        ZEND is called.  ZENDDB must be called for each open
        database prior to calling ZEND.  Prior to calling
        ZENDDB, all streams must have terminated their use
        of the database, otherwise the call fails and
        returns a fatal error.  Failure to close a database
        can cause destruction of the database.
ENTRY:  DBNAME(N * 8) Name of the database. This is the same
                      name that appeared on the database
                      initialisation routine.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZERMSG

ZERMSG, Error Description Routine
ARGS:   ERRNUM,BUFFER,BUFLEN,LOGFLG,RNAME
DESC:   ZERMSG converts an error code ERRNUM into coded text
        that can be printed.
ENTRY:  ERRNUM (I * 4) Error code to be converted.
        BUFLEN (I * 4) Maximum number of characters to
                       transfer to error text buffer BUFFER.
        LOGFLG (I * 4) Insert error message in log flag. If
                       the value of this argument is 0 then
                       no message is placed in the system
                       log file.  If the value of this
                       argument is I then the message is
                       placed in the system log file and
                       also transferred to the BUFFER array.
        RNAME  (N * 8) Calling routine name to be included
                       in error message placed in system log
                       file.
EXIT:   BUFFER (B * n) Will contain up to BUFLEN characters
                       describing the error code ERRNUM.
RETURN: Number of characters in the returned message,
        negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZEXIT

ZEXIT,  Exit One Process Level Regardless of Type
ARGS:   OSEED
DESC:   ZEXIT exits the block at the lowest level in the
        current stack, regardless its type(case or record).
ENTRY:  None.
EXIT:   OSEED(I * 4) If this was a process sample level,
                     then the current seed value is returned
                     here so that it can be used on the next
                     call for the next random-number
                     generation.

homecontents start chapter top of pagebottom of pagenext page index

ZFPTKY

ZFPTKY, Enter Real Value into Key
ARGS:   DATA
DESC:   ZFPTKY is called after one of the key initialisation
        routines in order to insert a real value into the
        next location of the key currently being defined.
ENTRY:  DATA (R * 4) Real value to insert into key.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZFPTRC

ZFPTRC, Move Real into CIR/Record
ARGS:   DATA,VDESC
DESC:   ZFPTRC transfers a real value into a CIR or data
        record.
ENTRY:  DATA (R * 4)  Real value to transfer to record.
        VDESC (D * 8) Variable descriptor of variable to
                      receive value.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZFPXKY

ZFPXKY, Enter Real Value into Key
ARGS:   DATA,ORDINAL,LENGTH
DESC:   ZFPXKY is called after one of the key initialisation
        routines in order to insert a real value into the
        next location of the key currently being defined.
ENTRY:  DATA (R * n)    Real value to insert into key.
        ORDINAL (I * 4) Starting byte number in area DATA to
                        transfer the value from. For a
                        simple variable this value is 1.
        LENGTH (I * 4)  Number of bytes in value.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZFPXRC

ZFPXRC, Move Real into CIR/Record
ARGS:   DATA,ORDINAL,LENGTH,VDESC
DESC:   ZFPXRC transfers a real value into a CIR or data
        record.
ENTRY:  DATA (R * n)    Real value to transfer to record.
        ORDINAL (I * 4) Starting byte number in area DATA to
                        transfer the value from. For a
                        simple variable this value is 1.
        LENGTH(I * 4)   Number of bytes in value.
        VDESC (D * 8)   Variable descriptor of variable to
                        receive value.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZFROM

ZFROM,  Start Creation of FROM Key
ARGS:   DUMMY
DESC:   ZFROM starts the creation of a key.  It creates a
        "FROM" key.  That is, a key which is used to select
        all CIR/record's whose key matches or comes after
        the key that is currently being defined.  It is
        normally called after one of the case/record level
        initialisation routines in order to initialise the
        key selection options for case or record loops.
        Following a call to ZFROM, other routines are called
        to enter values into the key one at a time.  For a
        case key only one call is made to enter the value of
        the case id.  For record keys, the case id is
        assumed to be the same as the last CIR retrieved or
        restored.  Therefore, only the record sort ids have
        to be inserted into the key.  The sort-ids must be
        entered in the order of their appearance in the key
        being created.
ENTRY:  DUMMY(I * 4) Dummy argument to make routine a
                   syntactically correct FORTRAN function.
                   Should always be 0.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZINTKY

ZINTKY, Enter Integer Value Into Key
ARGS:   DATA
DESC:   ZINTKY is called after one of the key initialisation
        routines in order to insert an integer value into
        the next location of the key currently being
        defined.
ENTRY:  DATA(I * 4)  Integer value to insert into key.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZINTRC

ZINTRC, Move Integer into CIR/record
ARGS:   DATA,VDESC
DESC:   ZINTRC transfers an integer value into a CIR or data
        record.
ENTRY:  DATA (I * 4)  Integer value to transfer to record.
        VDESC (D * 8) Descriptor for variable to modify.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZINXDT

ZINXDT, Convert Integer into Date String
ARGS:   IDAYS,DATEST,ORDINAL,LENGTH,DATEMP
DESC:   ZINXDT converts an integer value into a date string
        according to a specified format.
ENTRY:  IDAYS (I * 4)   The integer value to convert.
        ORDINAL (I * 4) Starting byte number in area DATEST
                        to transfer the date string to.
        LENGTH (I * 4)  Number of characters in strings
                        specified above.
        DATEMP (B * n)  String containing format for
                        decoding the date specified in
                        DATEST.  Legal characters are
                        I(ignore), Y(year), M(month), or
                        D(day).  For example 'MMIDDIYY'
EXIT:   DATEST (B * n)  The area in which to place the date
                        string created.  Starting at
                        position ORDINAL as specified above.

homecontents start chapter top of pagebottom of pagenext page index

ZINXKY

ZINXKY, Enter Integer Value Into Key
ARGS:   DATA,ORDINAL,LENGTH
DESC:   ZINXKY is called after one of the key initialisation
        routines in order to insert an integer value into
        the next location of the key currently being defined.
ENTRY:  DATA (I * n)   Integer value to insert into key.
        ORDINAL(I * 4) Starting byte number in area DATA to
                       transfer the value from. For a simple
                       variable this value is 1.
        LENGTH(I * 4)  Number of bytes in value.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZINXRC

ZINXRC, Move Integer into CIR/Record
ARGS:   DATA,ORDINAL,LENGTH,VDESC
DESC:   ZINXRC transfers an integer value into a CIR or data
        record.
ENTRY:  DATA    (I * n) Integer value to transfer to record.
        ORDINAL (I * 4) Starting byte number in area DATA to
                        transfer the value from. For a
                        simple variable this value is 1.
        LENGTH  (I * 4) Number of bytes in value.
        VDESC   (D * 8) Descriptor for variable to modify.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZINXTM

ZINXTM, Convert Integer into Time String
ARGS:   ITIME,TIMSTR,ORDINAL,LENGTH,TIMMAP
DESC:   ZINXTM converts an integer value into a time string
        according to a specified time format.
ENTRY:  ITIME   (I * 4)  The integer to convert.
        ORDINAL (I * 4)  Starting byte number in area TIMSTR to
                         transfer the time string to.
        LENGTH  (I * 4)  Number of characters in strings above.
        TIMMAP  (B * n)  String containing the decoding
                         format for the time string
                         contained in TIMEST. Legal values
                         are I(ignore), H(hour), M(minute),
                         S(second). For example 'HHMMSS'
EXIT: TIMSTR (B * n)     The area to receive the time
                         string. The location the string is
                         placed in this area is dependent on
                         ORDINAL.

homecontents start chapter top of pagebottom of pagenext page index

ZLABEL

ZLABEL, Get Value Label for Current Value of a Variable
ARGS:   VDESC,STRING,LENGTH
DESC:   ZLABEL gets the value label for the current value of
        a variable.  It is equivalent to the VALLAB
        function.
ENTRY:  VDESC (D * 8)  The variable descriptor.
        LENGTH (I * 4) Number of characters of value label
                       to retrieve.
EXIT:   STRING (B * n) String area in which the value label
                       will be placed.
RETURN: Number of characters actually transferred, negative
        if error.

homecontents start chapter top of pagebottom of pagenext page index

ZLABLN

ZLABLN, Get Value Label for Numeric Variable
ARGS:   VDESC,VALUE,STRING,LENGTH
DESC:   ZLABLN searches the database for the value label
        associated with the specified variable and the
        numeric value.
ENTRY:  VDESC (D * 8) The variable descriptor.
        VALUE (R * 8) The specific value whose label is to
                      be returned.
        LENGTH(I * 4) Number of characters of value label to
                      retrieve.
EXIT:   STRING (B * n) Area in which the value label will be
                       placed.
RETURN: Number of characters actually transferred, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZLABLS

ZLABLS, Get Value Label for String Variable
ARGS:   VDESC,VALUE,LENGTHI,STRING,LENGTH2
DESC:   ZLABILS searches the database for the value label
        associated with the specified variable and the
        string value.
ENTRY:  VDESC (D * 8)  The variable descriptor.
        VALUE (B * n)  The specific value whose label is to
                       be returned.
        LENGTH1(I * 4) Number of characters in the value.
        LENGTH2(I * 4) Number of characters of value label
                       to retrieve.
EXIT:   STRING (B * n) Area in which the value label is to
                       be placed.
RETURN: Number of characters actually transferred, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZLCKRT

ZLCKRT, Set or Return the Record Type Lock
ARGS:   DBNAME,RECTYP,LFLAG
DESC:   ZLCKRT sets or returns the lock for a specified
        record type.  It works only for concurrent HOST.
        The routine can be invoked from a regular HOST
        program but it does not have any effect, nor does it
        return any significant value.
ENTRY:  DBNAME(D * 8) The database name to which the record
                      type belongs.
        RECTYP(B * n) If ZLCKRT is invoked to set a record
                      type lock, RECTYP is the record type
                      number (0 means CIR). If it is
                      invoked to return a record type lock,
                      RECTYP should be set to a negative
                      value that is the -1 minus the record
                      type ( i.e. -1 for CIR, - 2 for
                      rectype 1, etc.)
        LFLAG (I * 4) Value to set the lock record type to (
                      if RECTYP is not negative).
EXIT:   LFLAG (B * n) Current value of the lock flag for the
                      rectype specified by a negative value
                      of RECTYP.

homecontents start chapter top of pagebottom of pagenext page index

ZLOGIN

ZLOGIN, Initialisation of Master Link
ARGS:   MDSN,MLEN,SDSN,SLEN
DESC:   ZLOGIN specifies the MASTER and SLAVE names (DSNS)
        and logs the slave (current process) into the
        MASTER.  It must be the next routine called after
        ZSTART.  If it is not called, the default master and
        slave names are used.  For non-concurrent HOST,
        ZLOGIN is not operational.
ENTRY:  MDSN (B * n)  The MASTER DSN.
        MLEN (I * 4)  The length of the MDSN.
        SDSN (B * n)  The SLAVE DSN.
        SLEN (I * 4)  The length of the SDSN.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZMSLAB

ZMSLAB, Return Value Label for Missing Value
ARGS:   VDESC,VALUE,STRING,LENGTH
DESC:   ZMSLAB retrieves the value label for a specified
        missing value of a certain variable.
ENTRY:  VDESC (D * 8)  The descriptor for the variable.
        VALUE (I * 4)  The missing value whose label is
                       being returned. (0, 1, 2, 3)
        LENGTH(I * 4)  Maximum number of characters to
                       return.
EXIT:   STRING (B * n) String area that will have the label
                       placed in it.
RETURN: The number of characters actually transferred
        negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZMSTRC

ZMSTRC, Transfer Missing Value to Variable
ARGS:   NUMBER,VDESC
DESC:   ZMSTRC sets the value of a specified variable to
        either undefined or one of the 3 missing values.
ENTRY:  NUMBER(I * 4) The value 0 if the variable is to be
                      set to undefined or the value 1-3 for
                      missing value 1-3.
        VDESC (D * 8) The descriptor of the destination
                      variable.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZNCASE

ZNCASE, Get Number of Cases in Database
ARGS:   DBNAME
DESC:   ZNCASE returns the number of cases currently in the
        database.
ENTRY:  DBNAME (N * 8) The database name.
EXIT:   None.
RETURN: The number of cases in the database, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZNEW

ZNEW,   Check if New CIR record was Created
ARGS:   DUMMY
DESC:   ZNEW returns an indication of whether the
        CIR/record in the lowest level of the retrieval
        stack was just created or if it existed prior to
        this reference.
ENTRY:  DUMMY (I * 4 ) Dummy argument needed to make a
                       syntactically correct FORTRAN
                       function. Should always be 0.
EXIT:   None.
RETURN: 0 if CIR/record previously existed, 1 if CIR/record
        was just created, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZNOR

ZNOR,   Get The Number of Records in Current Case
ARGS:   RECTYP
DESC:   ZNOR returns the number of records of the specified
        type within the current case.  This function
        corresponds to the COUNT function in DBMS.  ZNOR
        differs from ZNORD only in that the CIR
        corresponding to the innermost block in retrieval
        stack is used, regardless of database being used.
        ZNOR cannot be used on a caseless database.
ENTRY:  RECTYP(I * 4) The record type. If it is zero, then
                      it returns the total number of records
                      in the case.
EXIT:   None.
RETURN: The number of records of the specified type in the
        current case, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZNORD

ZNORD,  Get Number of Records in Current Case for Specified Database
ARGS:   DBNAME,RECTYP
DESC:   ZNORD returns the number of records of the specified
        type in the current case for the specified database.
        This function corresponds to the COUNT function in
        DBMS.
ENTRY:  DBNAME (N * 8) The database name.  ZNORD searches
                       backwards from the current level for
                       a block "belonging" to the specified
                       database and uses its CIR to return
                       the value from.  ZNORD cannot be used
                       on a caseless database.
        RECTYP (I * 4) The record type.  If it is zero, then
                       it returns the total number of
                       records in the case.
EXIT:   None.
RETURN: The number of records of the specified type in the
        current case, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZNRECS

ZNRECS, Get Number of Records of Type
ARGS:   DBNAME,RECTYP
DESC:   ZNRECS returns the number of records of a specified
        type currently in the database.
ENTRY:  DBNAME (N * 8) The database name.
        RECTYP (I * 4) The record type number, 0 for CIR.
EXIT:   None.
RETURN: The number or records of the specified type,
        negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZNSIDS

ZNSIDS, Get Number of Sort-ids in Record Type
ARGS:   DBNAME,RECTYP
DESC:   ZNSIDS returns the number of sort-ids in the key for
        the specified record type.
ENTRY:  DBNAME (N * 8) The database name.
        RECTYP (I * 4) The record type number.
EXIT:   None.
RETURN: The number of sort-ids in the specified record type,
        negative if errors.

homecontents start chapter top of pagebottom of pagenext page index

ZNVARS

ZNVARS, Get the Number of Variables in Record
ARGS:   DBNAME,RECTYP
DESC:   ZNVARS returns the number of variables in a
        specified record type or the CIR.  It can be used to
        determine if a database is caseless or not.
ENTRY:  DBNAME (N * 8) The database name.
        RECTYP (I * 4) The record type number.  Use zero for
                       the CIR.  If RECTYP is 0 and the
                       database is caseless, the function
                       returns 0.
EXIT:   None.
RETURN: The number of variables in the specified record
        type, zero for the number of variables in the CIR of
        a caseless database, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZOPEN

ZOPEN,  Determine if Database is Available
ARGS:   DBNAME
DESC:   ZOPEN is called to determine if a specified database
        is currently open for use or not.
ENTRY:  DBNAME ( N * 8 ) The database name to check.
EXIT:   None.
RETURN: Internal database number ( small positive integer ),
        negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZOPT

ZOPT,   Set or Return Various System Options
ARGS:   OPT
DESC:   ZOPT allows the user to select, deselect or return
        various options.
ENTRY:  OPT (I * 4)  The sum of the options to select if
                     positive; -1 to return the current
                     settings.
  OPT             Description
  0*1 or 1*1      allow or disallow the storage of valid
                  values
  0*2 or 1*2      allow or disallow the storage of undefined
                  values
  0*4 or 1*4      allow or disallow the storage of missing
                  values
  0*8 or 1*8      allow or disallow backward search In the
                  stack when a "from" descriptor level Is 0
  0*16 or 1*16    allow or disallow backward search in the
                  stack when a "to" descriptor level is 0
EXIT:   None.
RETURN: 0 if OPT is between 0 and 31, the sum of selected
        options if OPT is -1, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZORDB

ZORDB,  Initialise Specified Random Database
ARGS:   DBNAME,DBPASS,HSPASS,RDPASS,WRPASS, UPD,PREFIX,PRELEN
DESC:   ZORDB is called to attach the database.  It also
        verifies the passwords to ensure database security
        and accessibility.  It must be called prior to any
        reference to the new database.  Each open database
        requires a significant amount of memory to be
        allocated in the table area regardless of whether it
        is currently being used or not.  ZORDB may only be
        called for a database that is in random format.
ENTRY:  DBNAME(N * 8) Name of the database. This is the same
                      name that would appear on an "OLD FILE"
                      command.
        DBPASS(N * 8) The password for the database.
        HSPASS(N * 8) The password required to access the
                      database via HOST. If no password is
                      required then this field should
                      contain a blank name.
        RDPASS(N * 8) The read security password for the
                      database. This password is used to
                      define the default read security level
                      for any stream which does not
                      specifically set the read security
                      level for this database. If the
                      argument contains 8 blanks then the
                      standard DBMS default is used for
                      any stream not specifying a read
                      security password.
        WDPASS(N * 8) The write security password for the
                      database. This password is used to
                      define the default write security
                      level for any stream which does not
                      specifically set the write security
                      level for this database. If the
                      argument contains 8 blanks then the
                      standard DBMS default is used for
                      any stream not specifying a write
                      security password.
        UPD (I * 4)   Update/nonupdate flag. If UPD is 0
                      then the database is attached for read
                      only access. If however the value of
                      this argument is 1 or 2 then the
                      database is attached for exclusive
                      usage in order to allow the job to
                      modify the database. If the value is 2
                      then every change to the database
                      causes the changed internal tables to
                      be rewritten to the database file. If
                      the value is 1 then only when HOST
                      determines it is necessary will the
                      tables be rewritten to the database
                      file.
        PREFIX(B * n) Prefix used for database filenames.
        PRELEN(I * 4) Number of characters in "PREFIX".
EXIT:   None.
RETURN: The database number used in creating descriptors if
        no errors are encountered ( 1 for 1st opened
        database, 2 for 2nd, etc.  Negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZOSDB

ZOSDB,  Initialise Specified Sequential Database
ARGS:   DBNAME,DBPASS,HSPASS,RDPASS,WRPASS,UPD,
        PREFIX,PRELEN,SIFNAM,SOFNAM
DESC:   ZOSDB is called initially to attach a sequential
        format database.  It also verifies the passwords to
        ensure database security and accessibility.  Each
        open database requires a significant amount of
        memory to be allocated in the table area regardless
        of whether it is currently being used or not.  ZOSDB
        may only be called for a database which is in
        sequential format.
ENTRY:  DBNAME(N * 8) Name of the database. This is the same
                      name that would appear on an "OLD FILE"
                      command.
        DBPASS(N * 8) The password for the database.
        HSPASS(N * 8) The password required to access the
                      database via HOST. If no password is
                      required then this field should contain
                      a blank name.
        RDPASS(N * 8) The read security password for the
                      database. This password is used to
                      define the default read security level
                      for any stream which does not
                      specifically set the read security
                      level for this database. If the
                      argument contains 8 blanks then the
                      standard DBMS default is used for any
                      stream not specifying a read security
                      password.
       WRPASS (N * 8) The write security password for the
                      database. This password is used to
                      define the default write security level
                      for any stream which does not
                      specifically set the write security
                      level for this database. If the
                      argument contains 8 blanks then the
                      standard DBMS default is used for any
                      stream not specifying a write security
                      password.
       UPD (I * 4)    Update/nonupdate flag. If UPD is 0 then
                      the database is attached for read only
                      access. If however the value of this
                      argument is 1 or 2 then the database is
                      attached for exclusive usage in order
                      to allow the job to modify the
                      database. If the value is 2 then every
                      change to the database causes the
                      changed internal tables to be rewritten
                      to the database file. If the value is I
                      then only when HOST determines it is
                      necessary will the tables be rewritten
                      to the database file.
       PREFIX(B * n)  Prefix used for database filenames.
       PRELEN(I * 4)  Number of characters in "PREFIX".
       SIFNAM (N * 8) The "FILENAME" of the file containing
                      the sequential format input database.
       SOFNAM (N * 8) The  "FILENAME" of the file which will
                      contain the sequential format output
                      database. If this is not an update run
                      then this argument should contain all
                      blanks.
EXIT:   None.
RETURN: The database number used in creating descriptors if
        no errors are encountered ( 1 for 1st opened
        database, 2 for 2nd, etc ). negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZRCNT

ZRCNT,  Initialise COUNT Record Processing Block
ARGS:   RECTYP,TRECS,INDEX,START
DESC:   ZRCNT is the first of a series of routines that can
        be called in order to create "PROCESS RECORD" block
        with the COUNT option.  ZRCNT can be used to process
        ALL records by setting INDEX and START to 1 and
        TRECS to -1.  The arguments correspond to the
        arguments on the COUNT = clause of the PROCESS CASE
        command in RETRIEVAL.
ENTRY:  RECTYP(I * 4) The record type number to be
                      processed.
        TRECS (I * 4) Total number of records to be
                      processed.
        INDEX (I * 4) Every INDEX the record will be
                      processed.
        START (I * 4) Starting with the START the record in
                      the database.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if
        error.

homecontents start chapter top of pagebottom of pagenext page index

ZRCNTD

ZRCNTD, Set Current Database and Initialise COUNT
        Record-processing Block
ARGS:   RECTYP,TRECS,INDEX,START,DBNAME
DESC:   ZRCNTD is called to make DBNAME the current database
        and to start creating a "PROCESS RECORD" block with
        the COUNT option.  The purpose of this call is to
        initialise the retrieval stack with the required
        information.  The arguments correspond to the
        arguments on the COUNT = clause of the PROCESS CASE
        command in RETRIEVAL.
ENTRY:  RECTYP(I * 4) The record type number to be
                      processed.
        TRECS (I * 4) Total number of records to be
                      processed.
        INDEX (I * 4) Every INDEX the record will be
                      processed.
        START (I * 4) Starting with the START the record in
                      the database.
        DBNAME(N * 8) Database name.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if
        error.

homecontents start chapter top of pagebottom of pagenext page index

ZRCNTL

ZRCNTL, Initialise COUNT Record Processing Block
        Belonging to CIR
ARGS:   RECTYP,TRECS,INDEX,START,LEVEL
DESC:   ZRCNTL is called to start creating a "PROCESS
        RECORD" block (with the COUNT option) that belongs
        to the CIR at the specified level.  The purpose of
        this call is to initialise the retrieval stack with
        the required information.  Potentially, it can
        switch databases.  ZRCNTL can be used to process ALL
        records by setting INDEX and START to 1 and TRECS to
        -1.  The arguments correspond to the arguments on
        the COUNT clause of the PROCESS CASE command in
        RETRIEVAL.
ENTRY:  RECTYP(I * 4) The record type number to be
                      processed.
        TRECS (I * 4) Total number of records to be
                      processed.
        INDEX( I * 4) Every INDEX the record will be
                      processed.
        START (I * 4) Starting with the START the record in
                      the database.
        LEVEL (I * 4) Stack level of the CIR block to which
                      the record should belong.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if
        error.

homecontents start chapter top of pagebottom of pagenext page index

ZRCTDT

ZRCTDT, Transfer Date from CIR/Record
ARGS:   VDESC,DATEST,LENGTH,DATEMAP
DESC:   ZRCTDT retrieves a date value from the specified
        CIR/data record and converts it to a date string
        according to the user specified date map.
ENTRY:  VDESC (D * 8) Variable descriptor of variable to
                      retrieve.
        DATEST(B * n) Location to place date string.
        LENGTH(I * 4) Number of characters in strings DATEST
                      and DATEMP.
        DATEMP(B * n) String  containing the decoding format
                      for the date string contained in
                      DATEST. Legal values are W(day of
                      week) M(month), D(day), Y(year). For
                      example, 'MM/DD/YY' would produce
                      '12/31/86'.
EXIT:   DATEST(B * n) Will contain date string retrieved
                      from current CIR/data record.

homecontents start chapter top of pagebottom of pagenext page index

ZRCTFP

ZRCTFP, Transfer Floating-point Value from Record
ARGS:   VDESC,DATA
DESC:   ZRCTFP retrieves a real value from the specified
        CIR/data record.
ENTRY:  VDESC (D * 8) Variable descriptor of variable to
                      retrieve.
EXIT:   DATA (R * 4)  Will contain real value retrieved from
                      current CIR/data record.

homecontents start chapter top of pagebottom of pagenext page index

ZRCTIN

ZRCTIN, Transfer Integer Value from Record
ARGS:   VDESC,DATA
DESC:   ZRCTIN retrieves an integer value from the specified
        CIR/data record.
ENTRY:  VDESC (D * 8) Variable descriptor of variable to
                      retrieve.
EXIT:   DATA (I * 4)  Will contain integer value retrieved
                      from current CIR/data record.

homecontents start chapter top of pagebottom of pagenext page index

ZRCTRC

ZRCTRC, Transfer Value from One Variable to Another
ARGS:   VDESCI,VDESC2
DESC:   ZRCTRC transfers data from one variable in one
        record to a variable in either another record or the
        same record.
ENTRY:  VDESC1(D * 8)  The descriptor of the source
                       variable.
        VDESC2 (D * 8) The descriptor of the destination
                       variable.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZRCTST

ZRCTST, Transfer String from CIR/Record
ARGS:   VDESC,DATA,LENGTH
DESC:   ZRCTST retrieves a character string value from the
        specified CIR/data record.
ENTRY:  VDESC (D * 8) Variable descriptor of variable to
                      retrieve.
        LENGTH(I * 4) Number of characters at location DATA.
EXIT:   DATA  (B * n) Will contain character string
                      retrieved from current CIR/data
                      record.

homecontents start chapter top of pagebottom of pagenext page index

ZRCTTM

ZRCTTM, Transfer Time from CIR/Record
ARGS:   VDESC,TIMEST,LENGTH,TIMEMP
DESC:   ZRCTTM retrieves a time string from the specified
        CIR/data record.
ENTRY:  VDESC (D * 8)   Variable descriptor of variable to
                        retrieve.
        TIMEST (B * n)  Location to place time string.
        LENGTH (I * 4)  Number of characters in strings
                        TIMEST and TIMEMP.
        TIMEMP (B * n)  String containing the decoding
                        format for the time string contained
                        in TIMEST. Legal values are H(hour),
                        M(minute), S(second). For example,
                        'HH:MM:SS' would produce '11:59:59'.
EXIT:   TIMEST (B * n)  Will contain time string retrieved
                        from current CIR/data record.

homecontents start chapter top of pagebottom of pagenext page index

ZRCXDT

ZRCXDT, Transfer Date from CIR/Record
ARGS:   VDESC,DATEST,ORDINAL,LENGTH,DATEMP
DESC:   ZRCXDT retrieves a date string from the specified
        CIR/data record.
ENTRY:  VDESC (D * 8)  Variable descriptor of variable to
                       retrieve. See routines ZDESC and
                       ZDESCD for creating a descriptor.
        ORDINAL(I * 4) Starting byte number in area DATA to
                       transfer the value to. For a simple
                       variable this value is 1.
        LENGTH(I * 4)  Number of characters in strings
                       specified above.
        DATEMP(B * n)  String containing format for decoding
                       the date specified in DATEST.  Legal
                       characters are Y(year), M(month), or
                       D(day).  All other characters are
                       transferred "as is" to DATEST. For
                       example, 'MM/DD/YY' would produce
                       '12/25/81'.
EXIT:   DATEST(B * n)  Will contain date string retrieved
                       from current CIR/data record.

homecontents start chapter top of pagebottom of pagenext page index

ZRCXFP

ZRCXFP, Transfer Real from CIR/Record
ARGS:   VDESC,DATA,ORDINAL,LENGTH
DESC:   ZRCXFP retrieves a real value from the specified
        CIR/data record.
ENTRY:  VIDESC (D * 8)  Variable descriptor of variable to
                        retrieve.
        ORDINAL (I * 4) Starting byte number in area DATA to
                        transfer the value to. For a simple
                        variable this value is 1.
        LENGTH (I * 4)  Number of bytes at location DATA.
EXIT:   DATA (R * n)    Will contain real value retrieved
                        from current CIR/data record.

homecontents start chapter top of pagebottom of pagenext page index

ZRCXIN

ZRCXIN, Transfer Integer from CIR/Record
ARGS:   VDESC,DATA,ORDINAL,LENGTH
DESC:   ZRCXIN retrieves an integer value from the specified
        CIR/data record.
ENTRY:  VDESC (D * 8)   Variable descriptor of variable to
                        retrieve.
        ORDINAL (I * 4) Starting byte number in area DATA to
                        transfer the value to. For a simple
                        variable this value is 1.
        LENGTH(I * 4)   Number of bytes at location DATA.
EXIT:   DATA (I * n)  Will contain integer value retrieved
                      from current CIR/data record.

homecontents start chapter top of pagebottom of pagenext page index

ZRCXST

ZRCXST, Transfer a String from a CIR/Record
ARGS:   VDESC,DATA,ORDINAL,LENGTH
DESC:   ZRCXST retrieves a character string value from the
        specified CIR/data record.
ENTRY:  VDESC (D * 8)  Variable descriptor of variable to
                       retrieve.
        ORDINAL(I * 4) Starting byte number in area DATA to
                       transfer the value to. For a simple
                       variable this value is 1.
        LENGTH (I * 4) Number of bytes at location DATA.
EXIT:   DATA (B * n)   Will contain character string
                       retrieved from current CIR/data
                       record.

homecontents start chapter top of pagebottom of pagenext page index

ZRCXTM

ZRCXTM, Transfer Time from CIR/Record
ARGS:   VDESC,TIMEST,ORDINAL,LENGTH,TIMEMP
DESC:   ZRCXTM retrieves a time string from the specified
        CIR/data record.
ENTRY:  VDESC (D * 8)  Variable descriptor of variable to
                       retrieve.
        ORDINAL(I * 4) Starting byte number in area DATA to
                       transfer the value to. For a simple
                       variable this value is 1.
        LENGTH (I * 4) Number of characters in strings
                       above.
        TIMEMP (B * n) String containing the decoding format
                       for the time string contained in
                       TIMEST. Legal values are H(hour),
                       M(minute), S(second). For example,
                       'HH:MM:SS' would produce '11:59:59'.
EXIT:   TIMEST(B * n)  Will contain time string retrieved
                       from current CIR/data record.

homecontents start chapter top of pagebottom of pagenext page index

ZRDEL

ZRDEL,  Delete Current Record from Database
ARGS:   DUMMY
DESC:   ZRDEL is called after a record is retrieved to
        delete the current record.
ENTRY:  DUMMY (I * 4) Dummy argument needed to make a
                      syntactically correct FORTRAN
                      function. Should always be 0.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZREXIT

ZREXIT, Terminate Record Processing Level
ARGS:   OLDSEED
DESC:   ZREXIT is called to terminate a record level and pop
        back one level in the retrieval stack.  It only
        terminates the innermost record level.
ENTRY:  None.
EXIT:   OLDSEED(I * 4) It is set to the current value of the
                       seed, if the current level is a
                       PROCESS RECORD level with the SAMPLE
                       option.  Otherwise it value is
                       undefined.

homecontents start chapter top of pagebottom of pagenext page index

ZRFIND

ZRFIND, Find Record with Given Key
ARGS:   OPT, LFLAG, DIRECT, BEGINR, BEGINK
DESC:   ZRFIND finds an existent record or creates a new
        record with a previously specified key.  It is
        called after ZRGDMY, ZRGDML or ZRRDMY has created a
        dummy block and after putting values into the record
        id variable in the record and ( if OPT is 1 ) in
        other record variables.  When ZRFIND is executed,
        the values of the record ids are used to create the
        record key.  If the record ids variable are
        undefined, then the dummy block is converted into a
        PROCESS RFC ALL block and the next or previous
        record is read.  Otherwise, the dummy block ZRGDMY
        is converted into a REC IS block and: a) if OPT is
        1, then the undefined values are updated to the
        values read from the found record or b) if OPT is 2
        the full current record is replaced by the read
        record.
ENTRY:  OPT (I * 4)    Controls the update/replace of the
                       CIR.
        LFLAG (I * 4)  Lock flag.
        DIRECT (I * 4) If PROCESS REC then use 1 to get the
                       next record and -1 to get the
                       previous record.
        BEGINR(I * 4)  Number of record ids to include in
                       range.
        BEGINK (I * 4) Number of record ids to include in
                       starting key.
EXIT:   None.
RETURN: -4001 if record not found;
        -3026 if record is found but is incompatible locked;
        + 0003 if record is found and has a compatible lock;
        + 0004 if record is found and available for REC IS;
        + 0000 if record is found and available for PROCESS
        REC; negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZRFRST

ZRFRST, Start-up a Record Level Block and Get First
        Record
ARGS:   LFIAG
DESC:   ZRFRST is called after record-block initialisation
        and all key creations, and after all key-definition
        routines.  It starts-up the record block and gets
        the first record that meets all of the selection
        options previously specified.  No other record-level
        function can be called until this block is
        successfully executed.  After ZRFRST is executed, no
        further key definitions may be made.  The system
        checks that the current lock flag is compatible with
        LFLAG and if it is, LFILAG becomes the new lock.
ENTRY:  LFLAG (I * 4)  The lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZRGDMD

ZRGDMD, Set Current Database and initialise Dummy Block
ARGS:   RECTYP, DBNAME
DESC:   ZRGDMD is called to make DBNAME the current database
        and to start creating a dummy block.  The purpose of
        this call is to initialise the retrieval stack with
        the required information.
ENTRY:  RECTYP (I * 4) The record type to be processed.
        DBNAME (N * 8) The name of the database from which
                       the record should be selected.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if
        error.

homecontents start chapter top of pagebottom of pagenext page index

ZRGDML

ZRGDML, Start Dummy Record Block Belonging to CIR
ARGS:   RECTYP,LEVEL
DESC:   ZRGDML is called to start creating a dummy block
        that belongs to the CIR at the specified level.  The
        purpose of this call is to initialise the retrieval
        stack with the required information.  Potentially,
        it can switch databases.
ENTRY:  RECTYP(I * 4) Record type.
        LEVEL (I * 4) Level in stack of the CIR block to
                      which the record belongs.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if
        error.

homecontents start chapter top of pagebottom of pagenext page index

ZRGDMY

ZRGDMY, Start Dummy Record Block
ARGS:   RECTYP
DESC:   ZRGDMY is called to start creating a dummy block
        that belongs to the CIR at the specified level.  The
        purpose of this call is to initialise the retrieval
        stack with the required information
ENTRY:  RECTYP(I * 4)   Record type for record block.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if
        error.

homecontents start chapter top of pagebottom of pagenext page index

ZRIS

ZRIS,   Initialise RECORD IS Block
ARGS:   RECTYP,NEW,OLD
DESC:   ZRIS is the first of a series of routines that can
        be called in order to create "RECORD IS" block.  The
        purpose of this call is to initialise the retrieval
        stack with the required information.
ENTRY:  RECTYP(I * 4) The record type to be processed.
        NEW (I * 4)   NEW is I if a new record can be created
                      by this level, otherwise it is 0. The
                      database must have been opened for
                      UPDATE to allow a value of 1.
        OLD (I * 4)   OLD is I if an old record can be
                      accessed by this level, otherwise it is
                      0.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if
        error.

homecontents start chapter top of pagebottom of pagenext page index

ZRISD

ZRISD,  Set Current Database and Initialise RECORD IS
        Block
ARGS:   RECTYP,NEW,OLD,DBNAME
DESC:   ZRISD is called to make DBNAMF, the current database
        and to start creating a "RECORD IS" block.  The
        purpose of this call is to initialise the retrieval
        stack with the required information.
ENTRY:  RECTYP(I * 4) The record type to be processed.
        NEW (I * 4) NEW is 0 if a record cannot be created
                    by this level. The database must have
                    been opened for UPDATE to allow a value
                    of 1.
        OLD (I * 4) OLD is 0 if an old record cannot be
                    accessed by this level, otherwise it is
                    1.
        DBNAME(N * 8) The name of the database from which the
                    record should be selected.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if
        error.

homecontents start chapter top of pagebottom of pagenext page index

ZRISL

ZRISL,  Initialise RECORD IS Processing Block Belonging to
        CIR
ARGS:   RECTYP,NEW,OLD,LEVEL
DESC:   ZRISL is called to start creating a "RECORD IS"
        block that belongs to the CIR at the specified
        level.  The purpose of this call is to initialise
        the retrieval stack with the required information.
        Potentially, it can switch databases.
ENTRY:  RECTYP(I * 4) The record type to be processed.
        NEW (I * 4)   NEW is 0 if a new record is not legal
                      (NEW record IS). 1 if editing record is
                      legal (OLD record IS or record IS).
        OLD (I * 4)   OLD is 0 if an old record is not legal
                      (OLD record IS). 1 if a new record is
                      legal (NEW record IS or record IS).
        LEVEL (I * 4) Level in stack of the CIR block to
                      which the record belongs.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZRLAST

ZRLAST, Start-up Record Level Block and Get Last Record
ARGS:   LFLAG
DESC:   ZRLAST is called after record-block initialisation
        and all key creation, and after all key definition
        routines.  It starts-up the record block and gets
        the last record that meets all of the selection
        options previously specified.  No other record-level
        function can be called until this block is
        successfully executed.  After ZRLAST is executed, no
        further key definitions may be made.  The system
        checks that the current lock flag is compatible with
        LFLAG and if it is, LFLAG becomes the new lock.
ENTRY:  LFLAG (I * 4)     The lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZRLOCK

ZRLOCK, Get Lock Type of Innermost Level of Execution
        Stack
ARGS:   LFLAG
DESC:   ZRLOCK returns the lock type at the current
        innermost level of the execution stack.
ENTRY:  None.
EXIT:   LFLAG (I * 4)     Lock type.
RETURN: 0 if the level is not write-locked.
        1 if the level is write-locked.

homecontents start chapter top of pagebottom of pagenext page index

ZRNAMD

ZRNAMD, Get the Record Name for Record Type
ARGS:   DBNAME,RECTYP,RECNAM
DESC:   ZRNAMD lookups a record type and returns the record
        name associated with it.
ENTRY:  DBNAME ( N * 8 ) The name of the database to which the
                         record belongs.
        RECTYP (I * 4)   The record type.
EXIT:   RNAME (N * 8)    The record name corresponding to
                         database and record type specified.

homecontents start chapter top of pagebottom of pagenext page index

ZRNEXT

ZRNEXT, Start-up Record Level Block and Get Next Record
ARGS:   LFLAG
DESC:   ZRNEXT is called after record-block initialisation
        and all key creation, and after all key definition
        routines.  It starts-up the record block and gets
        the next record that meets all of the selection
        options previously specified.  No other record-level
        function can be called until this block is
        successfully executed.  After ZRNEXT is executed, no
        further key definitions may be made.  The system
        checks that the current lock flag is compatible with
        LFLAG and if it is, LFLAG becomes the new lock.
ENTRY:  LFLAG (I * 4)  The lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZRNUM

ZRNUM,  Get Record Number for Record Name of Current
        Database
ARGS:   RNAME
DESC:   ZRNUM lookups the record name specified in the
        current database and returns the corresponding
        record type number.
ENTRY:  RNAME (N * 8) The record name to lookup.
EXIT:   None.
RETURN: Record type number, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZRNUMD

ZRNUMD, Get Type Number for Record Name of Specified
        Database
ARGS:   DBNAME,RNAME
DESC:   ZRNUMD lookups a record name and returns the record
        type value associated with it for the specified
        database.
ENTRY:  DBNAME(N * 8) The database in which the record
                      resides.
        RNAME(N * 8) The record name to lookup.
EXIT:   None.
RETURN: The record type number associated with the specified
        record name, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZRPREV

ZRPREV, Start-up Record Level Block and Get Previous
        Record
ARGS:   LFLAG
DESC:   ZRPREV is called after record-block initialisation
        and all key creation, and after all key definition
        routines.  It starts-up the record block and gets
        the previous record that meets all of the selection
        options previously specified.  No other record-level
        function can be called until this block is
        successfully executed.  After ZRPREV is executed, no
        further key definitions may be made.  The system
        checks that the current lock flag is compatible with
        LFLAG and if it is, LFLAG becomes the new lock.
ENTRY:  LFLAG (I * 4)         The lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZRRDMY

ZRRDMY, Terminate Innermost Level and Reset Block to
        Dummy
ARGS:   DUMMY
DESC:   ZRRDMY terminates all processing at this level,
        writes the record if necessary, and resets the block
        back to dummy status.
ENTRY:  DUMMY(I * 4) Dummy argument needed to make a
                     syntactically correct FORTRAN function.
                     Should always be 0.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZRREST

ZRREST, Restore Record from Database
ARGS:   LFLAG
DESC:   ZRREST is called to replace a record in the
        retrieval stack with the corresponding record from
        the database.
ENTRY:  LFLAG(I * 4)      The lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZRSAM

ZRSAM,  Initialise Record Processing Loop
ARGS:   RECTYP,SAMPLE,SEED
DESC:   ZRSAM is the first of a series of routines that can
        be called in order to create "PROCESS RECORD" block
        with the SAMPLE option.
ENTRY:  RECTYP (I * 4) The record type value to be processed.
        SAMPLE (R * 4) Sample size (SAMPLE).
        SEED (I * 4)   Starting seed for random-number
                       generator.  Same seed always produces
                       the same random selection sequence.
                       Any odd value can be used for the
                       seed.  See routine ZREXIT for
                       obtaining the value of the seed after
                       the loop is finished.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if
        error.

homecontents start chapter top of pagebottom of pagenext page index

ZRSAMD

ZRSAMD, Set Current Database and Initialise SAMPLE
        Record-processing block
ARGS:   RECTYP,SAMPLE,SEED,DBNAME
DESC:   ZRSAMD is called to make DBNAME the current database
        and to start creating a "PROCESS CASE" block with
        the SAMPLE option.  The purpose of this call is to
        initialise the retrieval stack with the required
        information.
ENTRY:  RECTYP(I * 4)  Record type.
        SAMPLE (R * 4) Sample size ( 0 SAMPLE 1 )
        SEED (I * 4)   Starting seed.
        DBNAME(N * 8)  The name of the database form which
                       the record is selected.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if
        error.

homecontents start chapter top of pagebottom of pagenext page index

ZRSAML

ZRSAML, Start SAMPLE PROCESS RECORD Block
        Belonging to CIR
ARGS:   RECTYP,SAMPLE,SEED,LEVEL
DESC:   ZRSAML is called to start creating a "PROCESS
        RECORD" block (with the SAMPLE option) that belongs
        to the CIR at the specified level.  The purpose of
        this call is to initialise the retrieval stack with
        the required information.  Potentially, it can
        switch databases.
ENTRY:  RECTYP(I * 4) The record type value to be processed.
        SAMPLE(R * 4) Sample size ( 0 SAMPLE 1 ).
        SEED (I * 4)  Starting seed. The same seed always
                      generates the same sequence of random
                      numbers.
        LEVEL (I * 4) Level in stack of the CIR block to
                      which the record belongs.
EXIT:   None.
RETURN: Stack level of the newly created block, negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZRWRIT

ZRWRIT, Replace Modified Record on Database and Lock
        of Block
ARGS:   LFLAG
DESC:   ZRNWIT is called to replace the database version of
        the record with the current version in the retrieval
        stack.  This process is performed automatically by
        the HOST routines when the next record is retrieved
        or the record level is terminated.  However the user
        may want to write the modified record to the
        database and change the lock for further processing.
ENTRY:  LFLAG (I * 4)           Lock flag.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZSDESC

ZSDESC, Get Descriptor for Sort-id Variable
ARGS:   DBNAME,RECTYP,SIDNUM,VDESC
DESC:   ZSDESC returns the variable descriptor corresponding
        to a specified sort-id of a given record type.
ENTRY:  DBNAME(N*8) The database name.
        RECTYP(I * 4) The record type number.
        SIDNUM(I * 4) The sort-id number.
EXIT:   VDESC (D * 8) The descriptor for the specified
                      sort-id.

homecontents start chapter top of pagebottom of pagenext page index

ZSECLV

ZSECLV, Return the Current Security Values for a Database
ARGS:   DBNAME,RDLEV WRLEV
DESC:   ZSECLV returns the read and write access levels.
ENTRY:  DBNAME N * 8) The database name.
EXIT:   RDLEV (I * 4) The read level for the database.
        WRLEV (I * 4) The write level for the database.

homecontents start chapter top of pagebottom of pagenext page index

ZSECUR

ZSECUR, Specify Security Passwords
ARGS:   DBNAME,RDPASS,WRPASS
DESC:   ZSECUR specifies the passwords for the read and
        write security levels for a specific database for
        the current stream.  It should be called for each
        database used by each stream, which needs security
        levels different from those specified when the
        database was initially attached.  Otherwise the
        default levels specified on the attach call are
        assigned.  If the passwords specified by ZSECUR
        select security levels less than the default values,
        then the default values are used.
ENTRY:  DBNAME(N * 8) The name of the database the following
                      security passwords apply to.
        RDPASS(N * 8) Read security password for the current
                      stream.
        WRPASS(N * 8) Write security password for the current
                      stream.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZSTART

ZSTART, Initialise HOST System
ARGS:   MAXUSR,TABTYP,TAB1,TAB2
DESC:   ZSTART initialises all tables needed by the other
        HOST routines.  It must be called prior to any other
        HOST routine.
ENTRY:  MAXUSR (I * 4) Maximum number of streams accessing
                       the HOST system within this job.  A
                       small amount of space is allocated
                       for each stream specified regardless
                       of the number of streams currently
                       active.
        TABTYP (I * 4) Type of table space to be allocated
                       for use by the HOST system.  See
                       Machine Specifics documentation
                       for more information on use of this
                       and the next two associated
                       arguments.
        = 1            The HOST system gets space from the
                       operating system and returns it when
                       ZEND is called.
        TAB1  (I * 4)  Amount of space (in "double-word"s)
                       to be requested.  At the end of the
                       job the amount actually used is
                       returned so that a better estimate
                       can be applied next time.
        TAB2 (R * 8)   0. Unused argument for this type but
                       must appear on call in order to obey
                       FORTRAN syntax rules.
        = 2            The calling routine provides an area
                       to be used by HOST.  This area must
                       be "doubleword" aligned and must be
                       available for use at all times (i.e.
                       if program is segmented then this
                       area must be in the root segment).
       TAB1 (I * 4)    Amount of contiguous space available
                       for use by the HOST system (in units
                       of "dwrds").
       TAB2 (R * 8)    Array to be used by the HOST system.
                       In this case the array TAB2 must
                       not be modified in any way until
                       after ZEND is called. If any item of
                       this array is modified by the user
                       then the database will probably have
                       erroneous information written to it
                       and HOST actions will become unpre-
                       dictable.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZSTTKY

ZSTTKY, Enter String Value into Key
ARGS:   DATA,LENGTH
DESC:   ZSTTKY is called after one of the key initialisation
        routines in order to insert a character value into
        the next location of the key currently being defined.
ENTRY:  DATA (B * n)  Character string to insert into key.
        LENGTH(I * 4) Number of characters in string.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZSTTRC

ZSTTRC, Move String into CIR/Record
ARGS:   DATA,LENGTH,VDESC
DESC:   ZSTTRC transfers a character string into a CIR or
        data record.
ENTRY:  DATA (B * n)  Character string to transfer to record.
        LENGTH(I * 4) Number of characters in string.
        VDESC (D * 8) Variable descriptor of variable to receive
                      value.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZSTXKY

ZSTXKY, Enter String Value into Key
ARGS:   DATA,ORDINAL,LENGTH
DESC:   ZSTXKY is called after one of the key initialisation
        routines in order to insert a character value into
        the next location of the key currently being defined.
ENTRY:  DATA (B * n)   Character string to insert into key.
        ORDINAL(I * 4) Starting byte number in area DATA to
                       transfer the value from. For a simple
                       variable this value is 1.
        LENGTH(I * 4)  Number of characters in string.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZSTXRC

ZSTXRC, Move String into CIR/Record
ARGS:   DATA,ORDINAL,LENGTH,VDESC
DESC:   ZSTXRC transfers a character string into a CIR or
        data record.
ENTRY:  DATA (B * n)   Character string to transfer to record.
        ORDINAL(I * 4) Starting byte number in area DATA to
                       transfer the value from. For a simple
                       variable this value is 1.
        LENGTH(I * 4)  Number of bytes in value.
        VDESC (D * 8)  Variable descriptor of variable to
                       receive value.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZTHRU

ZTHRU,  Start Creation of THRU Key
ARGS:   DUMMY
DESC:   ZTHRU starts the creation of a key.  It creates a
        "THRU" key.  That is, a key which is used to select
        all CIR/record's whose key matches or comes before
        the key that is currently being defined.  It is
        normally called after one of the case/record level
        initialisation routines in order to initialise the
        key selection options for case or record loops.
        Following a call to ZTHRU other routines (described
        below) are called to enter values into the key one
        at a time.  For a case key only one call is made to
        enter the value of the case id.  For record keys,
        the case id is assumed to be the same as the last
        CIR retrieved or restored.  Therefore, only the
        record sort ids have to be inserted into the key.
        The sort-ids must be entered in the order of their
        appearance in the key being created.
ENTRY:  DUMMY(I * 4) Dummy argument to make routine a
                     syntactically correct FORTRAN function.
                     Should always be 0.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZTIME

ZTIME,  Return Current Date and Time as Integers.
ARGS:   IDAYS,ISECS
DESC:   ZTIME returns the current date and time as standard
        julian date and time values.  It returns the same
        values as the DBMS functions TODAY(0) and NOW(0).
ENTRY:  None.
EXIT:   IDAYS (I * 4) Number of days since Oct 15, 1582.
        ISECS (I * 4)  Number of seconds since midnight.

homecontents start chapter top of pagebottom of pagenext page index

ZTMTKY

ZTMTKY, Enter Time String into Key
ARGS:   TIMEST,LENGTH,TIMEMP
DESC:   ZTMTKY is called after one of the key initialisation
        routines in order to insert the value of a time
        string into the next location of the key currently
        being defined.
ENTRY:  TIMEST (B * n) Time string to insert into key.
        LENGTH (I * 4) Number of characters in strings TIMEST
                       and TIMEMP.
        TIMEMP (B * n) String containing the decoding format
                       for the time string contained in
                       TIMEST.  Legal values are 1(ignore),
                       H(hour), M(minute), S(second).  For
                       example: 'HHMMSS'.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZTMTRC

ZTMTRC, Move Time into CIR/Record
ARGS:   TIMEST,LENGTH,TIMEMP,VDESC
DESC:   ZTMTRC transfers the value of a time string into a
        CIR or data record.
ENTRY:  TIMEST (B * n) String containing the time value to transfer
                       to record.
        LENGTH (I * 4) Number of characters in strings TIMEST
                       and TIMEMP.
        TIMEMP (B * n) String containing the decoding format for
                       the time string contained in TIMEST.
                       Legal values are I(ignore), H(hour),
                       M(minute), S(second).
        VDESC (D * 8)  Variable descriptor of variables to receive
                       value.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZTMXIN

ZTMXIN, Convert Time String into Integer
ARGS:   TIMEST,ORDINAL,TIMEMP,LENGTH
DESC:   ZTMXIN converts a time string into a time integer
        value.
ENTRY:  TIMEST (B * n) Time string to convert.
        ORDINAL(I * 4) First character in string TIMEST to use.
        TIMEMP (B * n) String containing the decoding format for
                       the time string contained in TIMEST.
                       Legal values are I(ignore), H(hour), M(minute),
                       S(second).  For example: 'HHMMSS'.
        LENGTH (I * 4) Number of characters in strings above.
EXIT:   None.
RETURN: The integer equivalent of the time string (seconds
        since midnight), negative if error.

homecontents start chapter top of pagebottom of pagenext page index

ZTMXKY

ZTMXKY, Enter Time String into Key
ARGS:   TIMFST,ORDINAL,LENGTH,TIMEMP
DESC:   ZTMXKY is called after one of the key initialisation
        routines in order to insert the value of a time
        string into the next location of the key currently
        being defined.
ENTRY:  TIMEST (B * n) Time string to insert into key.
        ORDINAL(I * 4) Starting byte number in area DATA to
                       transfer the value from. For a simple vari-
                       able this value is 1.
        LENGTH (I * 4) Number of characters in strings above.
        TIMEMP (B * n) String containing the decoding format for
                       the time string contained in TIMEST.
                       Legal values are I(ignore), H(hour),
                       M(minute), S(second). For example:
                       'HHMMSS'.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZTMXRC

ZTMXRC, Move Time into CIR/Record
ARGS:   TIMEST,ORDINAL,LENGTH,TIMEMP,VDESC
DESC:   ZTMXRC transfers the value of a time string into a
        CIR or data record.
ENTRY:  TIMEST (B * n) String containing the time value to transfer
                       to record.
        ORDINAL(I * 4) Starting byte number in area DATA to
                       transfer the value from. For a simple vari-
                       able this value is 1.
        LENGTH (I * 4) Number of characters in strings above.
        TIMEMP (B * n) String containing the decoding format for
                       the time string contained in TIMEST.
                       Legal values are 1(ignore), H(hour),
                       M(minute), S(second).
        VDESC (D * 8)  Variable descriptor of variables to receive
                       value.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZUNTIL

ZUNTIL, Start Creation of UNTIL Key
ARGS:   DUMMY
DESC:   ZUNTIL starts the creation of a key.  It creates an
        "UNTIL" key.  That is, a key which is used to select
        all CIR/record's whose key comes before the key that
        is currently being defined.  It is normally called
        after one of the case/record level initialisation
        routines in order to initialise the key selection
        options for case or record loops.  Following a call
        to ZUNTIL other routines (described below) are
        called to enter values into the key one at a time.
        For a case key only one call is made to enter the
        value of the case id.  For record keys, the case id
        is assumed to be the same as the last CIR retrieved
        or restored.  Therefore, only the record sort ids
        have to be inserted into the key.  The sort-ids must
        be entered in the order of their appearance in the
        key being created.
ENTRY:  DUMMY(I * 4) Dummy argument to make routine a
                     syntactically correct FORTRAN function.
                     Should always be 0.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZUPLEV

ZUPLEV, Get Specified Database Update Level
ARGS:   DBNAME
DESC:   ZUPLEV returns the current update level of the
        database prior to this update.
ENTRY:  DBNAME(N*8) The name of the database.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZUSER

ZUSER,  Set to Different Stream
ARGS:   USERNO
DESC:   ZUSER saves the current stream's retrieval stack and
        reactivates the specified stream's stack.
ENTRY:  USERNO(I * 4) The number of the stream to process next.
                      Range is from I to maxnum specified on
                      HOST initialisation call.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index

ZVARLB

ZVARLB, Get Label of Variable
ARGS:   VDESC,STRING,LENGTH
DESC:   ZVARLB searches the database and return the variable
        label for a specified variable.
ENTRY:  VDESC (D * 8)  The descriptor of the variable.
        LENGTH (I * 4) The number of characters of the label to
                       transfer to STRING.
EXIT:   STRING (B * n) The area which will receive the
        variable label.
RETURN: Number of characters actually transferred, negative
        if error.

homecontents start chapter top of pagebottom of pagenext page index

ZVERS

ZVERS,  Return Version, Revision Numbers and Levels of
        HOST
ARGS:   VERNUM, VERLEV, REVNUM, REVLEV
DESC:   ZVERS returns the version and revision number and
        levels of the HOST package that the user is
        currently using.  It also returns an indication of
        whether it is regular or concurrent HOST.
ENTRY:  None.
EXIT:   VERNUM (I * 4) Version number.
        VERLEV (I * 4) Version level.
        REVNUM (I * 4) Revision number.
        REVLEV (I * 4) Revision level.
RETURN: 0 if regular HOST,1 if concurrent  HOST.

homecontents start chapter top of pagebottom of pagenext page index

ZVNAME

ZVNAME, Get Name for Variable Descriptor
ARGS:   VDESC,VNAME
DESC:   ZVNAME looks up a common or record variable
        descriptor and returns the variable's name.
ENTRY:  VDESC (D * 8) The variable descriptor.
EXIT:   VNAME (N * 8) contains the variable name
                      corresponding to the variable
                      descriptor specified.

homecontents start chapter top of pagebottom of pagenext page index

ZVTYPE

ZVTYPE, Get Type of Variable
ARGS:   VDESC,LENGTH
DESC:   ZVTYPE returns the type of a specified variable.
ENTRY:  VDESC (D * 8) The descriptor of the variable to get
                      the type for.
EXIT:   LENGTH(I * 4) The size of the variable in bytes.
RETURN: The code of the type of the specified variable,
        negative if error.
        CODE     TYPE
           1     String variable
           2     Categorical integer variable
           3     Date integer variable
           4     Time Integer variable
           5     Integer variable
           6     Real variable

homecontents start chapter top of pagebottom of pagenext page index

ZWITH

ZWITH,  Start Creation of WITH Key
ARGS:   DUMMY
DESC:   ZWITH starts the creation of a key.  It creates a
        "WITH" key.  ZWITH is used with CASE/RECORD IS
        levels to specify a key for a single CIR/record.  It
        can also be used with the PROCESS RECORD level to
        specify the first n sort-ids of a key, which causes
        all records with the same first n sort-ids to be
        selected in order.  It is normally called after one
        of the case/record level initialisation routines in
        order to initialise the key selection options for
        case or record loops.  Following a call to ZWITH
        other routines (described below) are called to enter
        values into the key one at a time.  For a case key
        only one call is made to enter the value of the case
        id.  For record keys, the case id is assumed to be
        the same as the last CIR retrieved or restored.
        Therefore, only the record sort ids have to be
        inserted into the key.  The sort-ids must be entered
        in the order of their appearance in the key being
        created.
ENTRY:  DUMMY(I * 4) Dummy argument to make routine a
                   syntactically correct FORTRAN function.
                   Should always be 0.
EXIT:   None.

homecontents start chapter top of pagebottom of pagenext page index