This is a sample of current work and contains a VIC command.

This work is -    copyrighted 1994, 1995 by: Timothy V. Rue

                        timrue@mindspring.com

             (see copyright information at end of document)

---------------------------------------------------------------------

                            (PK) Place-Keeper

  Brief:

    PK - Track and alter a VIC reference data and sequence position.


  Specific:

   (PK) Place-Keeper - The concept of the Place-Keeper is to keep track
        of the reference data and sequence position of a VIC parts
        including itself. It does this through a PK-file. PK can also
        directly alter the contents of the PK-file and change to another
        PK-file.
            The PK-file might be considered a process and environment type
        of file. The PK-file is intended to always be changing, by at least
        the changing SF running file@line# stack but in other ways too. Due
        to this the actual PK-file is only updated, saved, at selected
        times. If a watch window is open, then the contents of the watch
        window is always updated.
            The purpose of the PK-file, other than just keeping track of
        a VIC reference data and sequence position, is to allow snap-shots
        or frames of a VIC process to be taken and at selected positions
        in a VIC process sequence. Doing this allows a VIC process to be
        set aside, a frame to be saved, and picked up later or passed on
        to one or more VICs to continue. This makes possible many types of
        processing, such as using the concept of sub-processes, parrallel
        or network processing, tree or parent/child processing, etc. All
        done with the PK-file while also having the ability to communicate,
        pass data and processes between VICs. And all of this is done by
        simply changing the contents of the PK-file or the PK-file itself
        via the PK command.
            The best way to describe the PK-file and PK command is to take
        a look at the file, go over it line by line and how to change the
        lines using the PK command.

 The PK-file structure:
----------------------------------------------------------

 AI: AI-name.# ; PK-file directory ; Current Directory

 PK: PK-filename ; last/alt. PK-filename ; opt. default PK-filename

 OI: OI-filename ; last/alt. OI-filename ; opt. default OI-filename

 IP: device ; preprocess,Class ; BOI,EOI : opt. last/alt. set

 OP: device ; postprocess,Class ; BOO,EOO : opt. last/alt. set

 SF: SF-LPC flags ; last/alt. flags ; SF-fname@line# : opt. last/alt. set
   : SF-filename@line#,....>running stack>

 IQ: IQ flags ; last/alt. flags ; IQ-fname@line# : opt. last/alt. set
   : IQ-filename@line#,....>running stack>

 ID: ID flags ; last/alt. flags ; ID-fname@line# : opt. last/alt. set
   : ID-filename@line#,....>running stack>

 KE: Master-teeth ; last/alt. M-teeth ; KE-fname : opt. last/alt. set

----------------------------------------------------------

 Line, Field and Command descriptions:
 -------------------------------------

    The beginning two letter + colon (i.e. "AI:") are to identify the
    lines and related command. Where there is a following line with just a
    beginning colon `:', these are lines related to the previous line and
    command. This format is for the users benefit.


 GENERAL COMMANDS:
 -----------------

    "PK -?"

        Opens the hypertext help system window, at PK help.


    "PK -s "

        Saves "frame", PK-file with optional new filename. A path may be
        specified. This does NOT change the current PK-file name within
        the continuing PK-file. But it does change, if new filename, the
        listed current PK-filename in the new file. With no path option
        used, the file is written to the "current directory". If the
        current directory or path is another VIC room and the file already
        exist, an error happens and follows the standard error process of
        "VIC is put into step mode, the SF user interface is opened to the
        error causing line and the error window list the error." If the
        current directory or path is a non-VIC room or the executing VIC
        then the file is written over any existing file by the same name,
        unless the file is write protected causing the standard error
        process to happen.

        Note: this command is a forced save and functions differently than
        the auto-save that happens.


    "PK -rn "

        Rename PK-file. If no filename is given, the current filename
        extention is removed, if exist or other than an auto-count value,
        and a three place extension is added. This consists of ".pk" and a
        count value range of from 0-9 then A-Z (case insensitive but done
        in Caps.) For a total of 36 different versions of a filename. This
        count repeats, should the count go beyond "Z" and can be set, or
        reset, to any auto extension value by simply using this command
        with the specific filename and extension value. This does not save
        the file but only renames it within the PK-file and is the name
        used during auto-save or forced save without a filename given.


    "PK -del filename"

        Deletes given filename. No path is allowed and it only works on
        "room" files not delete protected. If the file does not exist or
        is a delete protected file, an error message will be posted to the
        error window and the VIC process will continue. This is a simple
        built-in delete. This works on any "room" file.


    IN THE FOLLOWING COMMANDS, THE USE OF:
    --------------------------------------

        "-r" for "r"eturn

        "-c" for "c"reate, "c"hange, "c"ancel



 AI: LINE DESCRIPTION:
 ---------------------

    AI: AI-name.# ; PK-file directory ; Current Directory
    -----------------------------------------------------

        This line contains information relative to the existance of this
    VIC. It's name.#, where it got the PK-file from, and current directory.


    COMMANDS:
    --------

    "PK AI -?"

        Opens the hypertext help system window, at "PK AI" help.
        *** This is only mentioned here for the possibility of making
            available more direct command help. This is a programmers
            option and will not be documented elsewhere except for
            main commands help. Hey, with hypertext help, is it really
            needed? But with non-hypertext help, it could be useful.

    "PK AI -r"

        Returns this AI: line.


 AI: FIELD 1 DESCRIPTION:
 ------------------------

    AI-name.#

        This is the specific VIC name and number, it is also the
        directory name of the specific VIC. The only time this field
        changes is in the event this PK-file is given to another VIC,
        where it will be giving that VIC name and number. This is an
        automatic field change.


    COMMAND:
    --------

    "PK AI -r1"

        Returns this "AI-name.#".


 AI: FIELD 2 DESCRIPTION:
 ------------------------

    PK-file directory

        This is the directory where this PK-file was obtained. Keep in
        mind that when a PK-file is auto-saved, it is saved (unless
        otherwise noted to be the VIC-HOME directory "assignment", i.e.
        VIC-HOME:AI-name.#) to it's room directory. But any PK-file loaded
        from it's "room" or the VIC-HOME directory "assignment" will NOT
        have this field updated. Recall, if the PK-file is obtained from
        the VIC-HOME directory but not through the VIC-HOME "assignment"
        this will be as though it is NOT from the VIC-HOME. This is an
        automatic field change and contains the complete path to the
        directory the PK-file was obtained from.


    COMMAND:
    --------

    "PK AI -r2"

        Returns this "PK-file directory and path"


 AI: FIELD 3 DESCRIPTION:
 ------------------------

    Current Directory

        This is the "current directory" and followed in the "search path"
        sequence, as stated in the AI command reference. This field
        contains the complete path to this directory.

    COMMANDS:
    ---------

    "PK AI -r3"

        Returns this "current directory and path"


    "PK AI -c3"

        Causes current directory to be the VIC room directory.


    "PK AI -c3 new.dir"

        Sets the current directory to given directory. If the directory
        does not exist the standard error process happens.


 PK: LINE DESCRIPTION:
 ---------------------

    PK: PK-filename ; last/alt. PK-filename ; opt. default PK-filename
    ------------------------------------------------------------------

        This line contains the current PK-filename (self-reference), the
    last or an alternate PK-filename, as well as an optional default
    PK-filename.


    COMMANDS:
    ---------

    "PK -r"

        Returns this PK: line.


    "PK -c "

        This in effect does several of the below mentioned actions. First
        loads in the PK-file, then last/alt. PK-file, then the default
        PK-file. Going thru and creation and error processes.


 PK: FIELD  1 DESCRIPTION:
 -------------------------

    PK-filename

        This is the current PK-file in use with this VIC. This is
        self-referencing, the name of this file.


    COMMANDS:
    ---------

    "PK -r1"

        Returns this "PK-filename"


    "PK -c1"

        Auto-saves the PK-file and loads in the "last/alt PK-file", if
        exist, otherwise loads in the "default PK-file". If the default
        does not exist it is created, following the method listed in the AI
        command reference for default PK-file creation. This includes the
        use of VIC-HOME:, PATH: and error actions.

        *** This command does NOT update the "last/alt. PK-file" in the
        PK-file it loads.

            If this command is used with only the default PK-file position,
        it does NOT auto-save but only loads the file, in effect it resets
        the PK-file to the last saved contents of this file.

            In a simple way, this command might be used to traverse a
        circular linked-list of PK-files. But used along with other
        commands and variables, more complex movement can be done. Keep in
        mind that the PK-files are snap-shots or frames of a process and
        environment, and at selected point in the process, processes that
        may also be circular.


    "PK -c1 PK-filename"

        Saves the current PK-file and makes the given PK-file the current.
        This also updates the now current PK-file's "last/alt. PK-file"
        with the saved PK-file name. If the given PK-filename does not
        exist it is created following the method listed in the AI command
        reference. This includes the use of VIC-HOME:, PATH: and error
        actions.


 PK: FIELD 2 DESCRIPTION:
 ------------------------

    last/alt. PK-filename

        This is the last used or alternate PK-file used by this VIC.


    COMMANDS:
    ---------

    "PK -r2"

        Returns the "last/alt. PK-filename"


    "PK -c2"

        Removes the "last/alt. PK-filename" from the PK-file.


    "PK -c2 PK-filename"

        Sets the "last/alt. PK-filename" to the given PK-filename. If
        the given PK-filename does not exist it is created following the
        method listed in the AI command reference. This includes the use of
        VIC-HOME:, PATH: and error actions.


 PK: FIELD 3 DESCRIPTION:
 ------------------------

    opt. default PK-filename

        This is the optional default PK-file used by this VIC.


    COMMANDS:
    ---------

    "PK -r3"

        Returns the "Default PK-filename".


    "PK -c3"

        Removes the "Default PK-filename" from the PK-file.


    "PK -c3 PK-filename"

        Sets the "Default PK-filename" to the given PK-filename. If the
        given PK-filename does not exist it is created following the method
        listed in the AI command reference. This includes the use of
        VIC-HOME:, PATH: and error actions.


 OI: LINE DESCRIPTION:
 ---------------------

    OI: OI-filename ; last/alt. OI-filename ; opt. default-filename
    ---------------------------------------------------------------

        This line contains the current OI-filename, the last or alternate
    OI-filename, as well as an optional default OI-filename. The OI-file
    contains the list of variables, opt. variable class and variable
    value, used by user defined processes.


    COMMANDS:
    ---------

    "PK OI -r"

        Returns this OI: line


    "PK OI -c "

        Changes the OI line


 OI: FIELD 1 DESCRIPTION:
 ------------------------

    OI-Filename

        This is the currently accessed OI-file within this VIC.


    COMMANDS:
    ---------

    "PK OI -r1"

        Returns the OI-filename.


    "PK OI -c1"

        Removes the current OI-filename from the PK-file. In doing this,
        the last/alt. OI-filename is moved to the current OI-filename
        position, if exist. Otherwise, the default OI-filename is copied to
        the current OI-filename position. If the default does not exist, it
        is created and placed in the VIC room.


    "PK OI -c1 OI-filename"

        Sets the current OI-Filename to the given OI-filename. This command
        also updates the last/alt. OI-filename to the previous current
        OI-filename. If the given OI-file does not exist, it is created
        following the standard file creation and use of VIC-HOME:, Path:
        and error actions.

        The command "PK OI -c1 running stack>

    The SF running stack always shows the next line # to be processed



 IQ: IQ flags ; last/alt. flags ; IQ-fname@line# : opt. last/alt. set
   : IQ-filename@line#,....>running stack>

    The IQ running stack always shows the next line # to be processed




 ID: ID flags ; last/alt. flags ; ID-fname@line# : opt. last/alt. set
   : ID-filename@line#,....>running stack>

    The ID running stack always shows the next line # to be processed




 KE: Master-teeth ; last/alt. M-teeth ; KE-fname : opt. last/alt. set


------------------------------------------------------------------------
COPYRIGHT INFORMATION:
------------------------------------------------------------------------

Although this work is copyrighted, the intent of the copyright is to
support the concept of giving credit where credit is due and to prevent
the wrongful constraint and/or abuse/exploitation and/or distortion/
manipulation of it's content. This work may be transfer and used
following these conditions:

1) This work may be transferred only in whole and so long as NO
   consideration is received in return.

2) That proper credit is given to the Author(s) responsible for the
   creation of the work.

3) That there is no intentional distortion or manipulation of the work
   that in any way damages or harms the work or authors(s) responsible
   for the creation of the work. And that in finding any unintentional
   distortions or manipulations, correction(s) will be made A.S.A.P. and
   with reasonable effort to communicate the correction(s) to all.

4) This work shall not be included in any for-profit product and/or
   service without the written approval of the authors(s) responsible
   for it's creation. The exception to this is, of course relates to the
   world wide web, in that the work may be made available on and through
   the W.W.W. so long as the other conditions are adhered to.

                                ****








Email: timrue@mindspring.com