Copyright (c) 1994, 1995, 2002 Timothy Rue (3seas@threeseas.net) Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the file fdl.html ------------------------------------------------------------------------------- (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 instance 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, parallel 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 & path/dir. ; 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, Tag, BoI, EoI ; opt. last/alt. set ; default set OP: device, postprocess, Tag, BoO, EoO ; opt. last/alt. set ; default set SF: SF-LPC flags ; last/alt. flags ; SF-filename@line# : SF-filename@line#,....>running stack> IQ: IQ flags ; last/alt. flags ; IQ-filename@line# : IQ-filename@line#,....>running stack> ID: ID flags ; last/alt. flags ; ID-filename@line# : ID-filename@line#,....>running stack> KE: Master-teeth ; last/alt. M-teeth ; KE-filename : opt. last/alt. set ---------------------------------------------------------- PK-File - Line, Field and PK Command descriptions: ================================================== The beginning two letters and 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. (???) (an AI command call to a VIC instance to run IQ on a VIC-help.iq file for PK help which may contain an external call to load a web browser and hypertext/html PK help page.) "PK -s [opt path:][opt. filename]" 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 [opt. filename]" Rename PK-file. If no filename is given, the current filename extension 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 existence 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.(???) (an AI command call to a VIC instance to run IQ on a VIC-help.iq file for "PK AI" help which may contain an external call to load a web browser and hypertext/html PK AI help page.) "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, if not already. "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 PK -?" Opens the hypertext help system window, at "PK PK" help.(???) (an AI command call to a VIC instance to run IQ on a VIC-help.iq file for PK help which may contain an external call to load a web browser and hypertext/html PK help page.) "PK PK -r" Returns this PK: line. "PK PK -c [PK: line]" This in effect does several of the below mentioned actions. It is a way of handing PK the whole PK line (all three fields of the PK line). First loads in the PK-file, then last/alt. PK-file, then the default PK-file, Going thru and creation and error processes. **** If no "PK: line" argument is given it does the same thing as the following "PK PK -c1" command does except it DOES Auto-save the current PK-file before loading in the prev./alt. or default PK file. "PK PK" Toggle or switches PK line Field 1 and 2 contents. Contents of Field 1 becomes content of Field 2 and vice versa. If field 2 is empty then the default PK-file is used. It the default does not exist, it is created, going thru the creation and error process. 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 PK -r1" Returns the current PK-filename. "PK PK -c1" Drops the current PK-file contents 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-filename position in the PK-file it loads. *** 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 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-filename" with the saved 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 2 DESCRIPTION: ------------------------ last/alt. PK-filename This is the last used or alternate PK-file used by this VIC. COMMANDS: --------- "PK PK -r2" Returns the last/alt. PK-filename "PK PK -c2" Removes the last/alt. PK-filename from the PK-file. "PK 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 PK -r3" Returns the "Default PK-filename". "PK PK -c3" Removes the "Default PK-filename" from the PK-file. "PK 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 -?" Opens the hypertext help system window, at "PK OI" help.(???) (an AI command call to a VIC instance to run IQ on a VIC-help.iq file for "PK OI" help which may contain an external call to load a web browser and hypertext/html "PK OI" help page.) "PK OI -r" Returns this OI: line "PK OI -c" Causes the OI line to reset to default values. Which is default-filename in field 1 position. If the file does not exist, it is created. "PK OI -c [OI: line]" Changes the OI line to the values given. "PK OI" Toggles or switches OI line Fields 1 and 2 contents. Contents of Field 1 becomes content of Field 2 and vice versa. If field 2 is empty the then the default-file is use. If it does not exist then it is created. OI: FIELD 1 DESCRIPTION: ------------------------ OI-Filename This is the currently accessed OI-file within this VIC. COMMANDS: --------- "PK OI -r1" Returns the current 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. OI: FIELD 2 DESCRIPTION: ------------------------ last/alt. OI-filename This is the last or alternate OI-file accessed within this VIC. COMMANDS: --------- "PK OI -r2" Returns the last/alt. OI-filename. "PK OI -c2" Removes the last/alt. OI-filename from the PK-file. "PK OI -c2 OI-filename" Sets the last/alt. OI-File to the given OI-filename. If the OI-file does not exist, it is created following the standard file creation and use of VIC-HOME:, Path: and error actions. OI: FIELD 3 DESCRIPTION: ------------------------ opt. default OI-filename This is the optional default OI-file within this VIC. COMMANDS: --------- "PK OI -r3" Returns the optional/default OI-filename. "PK OI -c3" Removes the opt/default OI-filename from the PK-file. "PK OI -c3 OI-filename" Sets the opt/default OI-Filename to the given 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. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ NOTE: In the following IP: and OP: LINE DESCRIPTION... "Device" is any device that can generate output and/or receive input (respective of InPut or OutPut Line. These may be pipes (named or unnamed) or files or devices like stdin/stdout, serial port, internet related port, etc.. It should be formatted in terms of how you would use it in a typical command shell. I.E. ">>file", "ser:", "|sort", etc.. "preprocessor" and "postprocessor" are optional field that name any program the input or output is to be processed by before reaching its designation of input variable or output direction/device. If used it is applied before the following BoI, EoI, BoO, EoO filtering characters/patterns/offsets are. "Tag" is really just an optional tag to be used as the user sees fit, but is associated to variables (OI file contents) created and used by a VIC instance. BoI = Beginning of Input character(s)/pattern/offset EoI = End of Input character(s)/pattern/offset BoO = Beginning of Output character(s)/pattern/offset EoO = End of Output character(s)/pattern/offset These are optional character(s)/pattern matching to determine when input and output begins and ends. i.e. BoI = "cat" and EoI = "dog" [must be quoted] and with the input string of "the cat chased the mouse while being chased by the dog, Rover" the input received would be "cat chased the mouse while being chased by the dog". Perhaps there should be a way to determine whether or not to include named characters? i.e. -"cat" +"dog" would output "chased the mouse while being chased by the dog". Also offset values may be used instead of, or along with, quoted patterns by using unquoted numerical values, where if used w/o quoted pattern determines the offset of the beginning and/or end of input/ output relative to the beginning of input/output. But if used with quoted pattern(s), then it's the first pattern match after offset, that begins or end used input/output. The BoI/O and EoI/O pattern matching range will be a set or subset of the IQ commands pattern matching abilities. These pattern matching abilities will be something following standards already in use. Thought note: It may be useful to make OI variable files compatible/interchangeable with KE files. If I recall, that was one of the whys behind the thought of adding a "class/tag" to a variable. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ IP: LINE DESCRIPTION: ===================== IP: device, preprocess, Tag, BoI, EoI ; opt. last/alt. set ; default set -------------------------------------------------------------------------- This line contains information relative to input as it pertains to the OI command (the command for creating and manipulating files of variables and the contents of these variables.) The output device for input to be received from, an optional preprocessor stage (this may be another input/ output program or even another VIC), an optional content Tag, the optional "Beginning of Input" (BoI) character(s)/pattern/offset set and the "End of Input" (EoI) character(s)/patterns/offset set. It also contains an optional last/alternate full set of the above as well as a default set. COMMANDS: --------- "PK IP -?" Opens the hypertext help system window, at "PK IP" help.(???) (an AI command call to a VIC instance to run IQ on a VIC-help.iq file for "PK IP" help which may contain an external call to load a web browser and hypertext/html "PK IP" help page.) "PK IP -r" Returns this IP: line "PK IP -c" Causes the IP: line to reset to default value, which is only "stdin,,,," in field 1 position. "PK IP -c [IP: line]" Changes the IP line to the values given. "PK IP" Toggles or switches IP line Fields 1 and 2 contents. Contents of Field 1 becomes content of Field 2 and vice versa. If field 2 is empty then the default value of "stdin,,,," is used. IP: FIELD 1 DESCRIPTION: ------------------------ device, preprocess, Tag, BoI, EoI This is the current IP-set accessed within this VIC. COMMANDS: --------- "PK IP -r1" Returns the current IP-set. "PK IP -c1" Removes the current IP-set from the PK-file. In doing this, the last/alt. IP-set is moved to the current position, if exist. Otherwise, the default IP-set is copied to the current position. If the default does not exist, it is created as simply "stdin,,,,". "PK IP -c1 IP-set" Sets the current IP-set position to the given IP-set. This command also moves to the last/alt. IP-set position the prior "current" IP-set (The IP-set being replaced). If the given IP-set does not contain a device then the device position is set to stdin. IP: FIELD 2 DESCRIPTION: ------------------------ opt. last/alt. IP-set This is the last or alternate IP-set accessed within this VIC. COMMANDS: --------- "PK IP -r2" Returns the last/alt. IP-set. "PK IP -c2" Removes the last/alt. IP-set from the PK-file. "PK IP -c2 IP-set" Sets the last/alt. IP-set to the given IP-set. If the IP-set does not contain a device then the device position is set to stdin. IP: FIELD 3 DESCRIPTION: ------------------------ default IP-set This is the optional default IP-set within this VIC. COMMANDS: --------- "PK IP -r3" Returns the optional/default IP-set. "PK IP -c3" Removes the opt/default IP-set from the PK-file. "PK IP -c3 IP-set" Sets the opt/default IP-set to the given IP-set. If the given IP-set does not contain a device then the device position is set to stdin. OP: LINE DESCRIPTION: ===================== OP: device, postprocess, Tag, BoO, EoO ; opt. last/alt. set ; default set --------------------------------------------------------------------------- This line contains information relative to Output as it pertains to the Specific VIC instance SF command processor. The device to send SF command processor output to, an optional postprocessor stage (this may be another input/output program or even another VIC), an optional Content Tag, the optional "Beginning of Output" (BoO) character(s)/pattern/offset set and the "End of Output" (EoO) character(s)/patterns/offset set. It also contains an optional last/alternate full set of the above as well as a default set. COMMANDS: --------- "PK OP -?" Opens the hypertext help system window, at "PK OP" help.(???) (an AI command call to a VIC instance to run IQ on a VIC-help.iq file for "PK OP" help which may contain an external call to load a web browser and hypertext/html "PK OP" help page.) "PK OP -r" Returns this OP: line "PK OP -c" Causes the OP: line to reset to default value, which is only "stdout,,,," in field 1 position. "PK OP -c [OP: line]" Changes the OP line "PK OP" Toggles or switches OP line Fields 1 and 2 contents. Contents of Field 1 becomes content of Field 2 and vice versa. If field 2 is empty then the default value of "stdout,,,," is used. OP: FIELD 1 DESCRIPTION: ------------------------ device, postprocess, Tag, BoO, EoO This is the current OP-set accessed within this VIC. COMMANDS: --------- "PK OP -r1" Returns the current OP-set. "PK OP -c1" Removes the current OP-set from the PK-file. In doing this, the last/alt. OP-set is moved to the current position, if exist. Otherwise, the default OP-set is copied to the current position. If the default does not exist, it is created as simply "stdout,,,,". "PK OP -c1 IP-set" Sets the current OP-set position to the given OP-set. This command also moves to the last/alt. OP-set position the prior "current" OP-set (The IP-set being replaced). If the given OP-set does not contain a device then the device position is set to stdout. OP: FIELD 2 DESCRIPTION: ------------------------ opt. last/alt. OP-set This is the last or alternate OP-set accessed within this VIC. COMMANDS: --------- "PK OP -r2" Returns the last/alt. OP-set. "PK OP -c2" Removes the last/alt. OP-set from the PK-file. "PK OP -c2 OP-set" Sets the last/alt. OP-set to the given OP-set. If the OP-set does not contain a device then the device position is set to stdout. OP: FIELD 3 DESCRIPTION: ------------------------ default OP-set This is the optional default OP-set within this VIC. COMMANDS: --------- "PK OP -r3" Returns the optional/default OP-set. "PK OP -c3" Removes the opt/default OP-set from the PK-file. "PK OP -c3 OP-set" Sets the opt/default OP-set to the given OP-set. If the given OP-set does not contain a device then the device position is set to stdout. SF: LINES DESCRIPTIONS: ======================= SF: SF-LPC flags ; last/alt. flags ; SF-filename@line# : SF-filename@line#,....>running stack> ------------------------------------------------------- The SF running stack always shows the "next" file@line# to be processed. Field 3 can be empty or contain just an SF-filename or an SF stack of filenames and/or "stdin", "IQ-out" or "ID-out". SF-LPC FLAGS: **** The setting of flags should work in a manner that adding or subtracting a flag changes the value of the position for which that flag belongs. See "sf-lpc-flags.html" for possible flags. COMMANDS: --------- "PK SF -?" Opens the hypertext help system window, at "PK SF" help.(???) (an AI command call to a VIC instance to run IQ on a VIC-help.iq file for "PK SF" help which may contain an external call to load a web browser and hypertext/html "PK SF" help page.) "PK SF -r" Returns this first SF: line "PK SF -c" Causes the SF: line to reset to default values, default flags in field 1, field 2 left blank and "SF-default-filename" in field 3 position. If SF-default-file does not exist and the SF-stack is empty then SF is put into interactive mode and field 3 is set to stdin. "PK SF -c [SF: line]" Changes the first SF: line to the values given. "PK SF" Toggles or switches SF line Fields 1 and 2 contents. Contents of Field 1 becomes content of Field 2 and vice versa. If field 2 is blank then default flag values are used. SF: FIELD 1 DESCRIPTION: ------------------------ SF-LPC flags This is the current SF-LPC flags accessed within this VIC. COMMANDS: --------- "PK SF -r1" Returns the current SF-LPC flags. "PK SF -c1" Removes the current SF-LPC flags from the PK-file. In doing this, the last/alt. SF-LPC flags are moved to the current position, if exist. Otherwise, the default SF-LPC flags are written to the current position. "PK SF -c1 [SF-LPC flags]" Sets the current SF-LPC flags position to the given SF-LPC flags. This command also moves to the last/alt. SF-LPC flags position the prior "current" SF-LPC flags (The SF-LPC flags being replaced). SF: FIELD 2 DESCRIPTION: ------------------------ opt. last/alt. flags This is the last or alternate SF-LPC flags accessed within this VIC. COMMANDS: --------- "PK SF -r2" Returns the last/alt. SF-LPC flags. "PK SF -c2" Clears the last/alt. SF-LPC flags from the PK-file. "PK SF -c2 [SF-LPC flags]" Sets the last/alt. SF-LPC flags to the given SF-LPC flags. SF: FIELD 3 DESCRIPTION: ------------------------ SF-filename@line# This is the default SF-file and line number to use in this VIC. It is the default starting position to use when the SF stack is empty (this is what "empty" is replaced with. This value can contain a stack of SF-filename@line# values. If this value is empty when the stack is, the stack gets set to "stdin" and a current SF-LPC flag is automatically set to interactive mode. COMMANDS: --------- "PK SF -r3" Returns the contents of this field 3. "PK SF -c3" Clears the contents of this field 3 from the PK-file. "PK SF -c3 [SF-filename@line#,....]" Sets field 3 to the given SF-filename@line# value(s). SF: FIELD 4 DESCRIPTION (second line): ------------------------ SF-filename@line#,...> running stack> This is the SF-file running stack in use in this VIC. If this value is empty and field 3 is also empty then the stack gets set to "stdin" and a current SF-LPC flag is automatically set to interactive mode. The SF running stack always shows the "next" file@line# to be processed. COMMANDS: --------- "PK SF -r4" Returns the contents of this field 4. "PK SF -c4" Clears the contents of this field 4 from the PK-file. "PK SF -c4 [SF-filename@line#,...]" Sets field 4 to the given SF-filename@line#,... value(s). IQ: LINES DESCRIPTIONS: ======================= IQ: IQ flags ; last/alt. flags ; IQ-filename@line# : IQ-filename@line#,....>running stack> -------------------------------------------------- The IQ running stack always shows the "next" file@line# to be processed. Field 3 can be empty or contain just an IQ-filename or an IQ stack of filenames. IQ FLAGS: **** The setting of flags should work in a manner that adding or subtracting a flag changes the value of the position for which that flag belongs. See the stand alone IQ program for flag possibilities (which may and will likely change when IQ is integrated into the rest of the VIC). COMMANDS: --------- "PK IQ -?" Opens the hypertext help system window, at "PK IQ" help.(???) (an AI command call to a VIC instance to run IQ on a VIC-help.iq file for "PK IQ" help which may contain an external call to load a web browser and hypertext/html "PK IQ" help page.) "PK IQ -r" Returns this first IQ: line "PK IQ -c" Causes the IQ: line to reset to default values, default flags in field 1, field 2 left blank and "IQ-default-filename" in field 3 position. If the IQ-default-file does not exist then IQ won't have any output except for error out that file does not exist (if error out flag is set). "PK IQ -c [IQ: line]" Changes the first IQ: line to the values given. "PK IQ" Toggles or switches IQ line Fields 1 and 2 contents. Contents of Field 1 becomes content of Field 2 and vice versa. If field 2 is blank then default flag values are used. IQ: FIELD 1 DESCRIPTION: ------------------------ IQ flags (current) This is the current IQ flags accessed within this VIC. COMMANDS: --------- "PK IQ -r1" Returns the current IQ flags. "PK IQ -c1" Removes the current IQ flags from the PK-file. In doing this, the last/alt. IQ flags are moved to the current position, if exist. Otherwise, the default IQ flags are written to the current position. "PK IQ -c1 [IQ flags]" Sets the current IQ flags position to the given IQ flags. This command also moves to the last/alt. IQ flags position the prior "current" IQ flags (The IQ flags being replaced). IQ: FIELD 2 DESCRIPTION: ------------------------ opt. last/alt. flags This is the last or alternate IQ flags accessed within this VIC. COMMANDS: --------- "PK IQ -r2" Returns the last/alt. IQ flags. "PK IQ -c2" Clears the last/alt. IQ flags from the PK-file. "PK IQ -c2 [IQ flags]" Sets the last/alt. IQ flags to the given IQ flags. IQ: FIELD 3 DESCRIPTION: ------------------------ IQ-filename@line# This is the default IQ-file and line number to use in this VIC. It is the default starting position to use when the IQ stack is empty (this is what "empty" is replaced with. This value can contain a stack of IQ-filename@line# values. If this value is empty when the stack is, then IQ outputs nothing or an error message that no IQ-file is given (when error out flag is set.) COMMANDS: --------- "PK IQ -r3" Returns the contents of this field 3. "PK IQ -c3" Clears the contents of this field 3 from the PK-file. "PK IQ -c3 [IQ-filename@line#,....]" Sets field 3 to the given IQ-filename@line# value(s). IQ: FIELD 4 DESCRIPTION (second line): ------------------------ IQ-filename@line#,...> running stack> This is the IQ-file running stack in use in this VIC. If this value is empty then it gets set to the value of IQ field 3 upon the use of the IQ command. If field 3 is also empty then IQ output nothing or an error message that no IQ-file is given (if error out flag is set). The IQ running stack shows the next file@line# to be processed. When the IQ command is issued then the SF stack has "IQ-out" added to the stack to indicate where it is getting it's input from. COMMANDS: --------- "PK IQ -r4" Returns the contents of this field 4. "PK IQ -c4" Clears the contents of this field 4 from the PK-file. "PK IQ -c4 [IQ-filename@line#,...]" Sets field 4 to the given IQ-filename@line#,... value(s). ID: LINES DESCRIPTIONS: ======================= ID: ID flags ; last/alt. flags ; ID-filename@line# : ID-filename@line#,....>running stack> -------------------------------------------------- The ID running stack always shows the "next" file@line# to be processed Field 3 can be empty or contain just an ID-filename or an ID stack of filenames. ID FLAGS: **** The setting of flags should work in a manner that adding or subtracting a flag changes the value of the position for which that flag belongs. There is currently no reference for this but the functionality used to manipulate ID flags will be similar to IQ flag manipulation. COMMANDS: --------- "PK ID -?" Opens the hypertext help system window, at "PK ID" help.(???) (an AI command call to a VIC instance to run IQ on a VIC-help.iq file for "PK ID" help which may contain an external call to load a web browser and hypertext/html "PK ID" help page.) "PK ID -r" Returns this first ID: line "PK ID -c" Causes the ID: line to reset to default values, default flags in field 1, field 2 left blank and "ID-default-filename" in field 3 position. If the ID-default-file does not exist then ID won't have any output except for error out that file does not exist (if error out flag is set). "PK ID -c [ID: line]" Changes the first ID: line to the values given. "PK ID" Toggles or switches ID line Fields 1 and 2 contents. Contents of Field 1 becomes content of Field 2 and vice versa. If field 2 is blank then default flag values are used. ID: FIELD 1 DESCRIPTION: ------------------------ ID flags (current) This is the current ID flags accessed within this VIC. COMMANDS: --------- "PK ID -r1" Returns the current ID flags. "PK ID -c1" Removes the current ID flags from the PK-file. In doing this, the last/alt. ID flags are moved to the current position, if exist. Otherwise, the default ID flags are written to the current position. "PK ID -c1 [ID flags]" Sets the current ID flags position to the given ID flags. This command also moves to the last/alt. ID flags position the prior "current" ID flags (The ID flags being replaced). ID: FIELD 2 DESCRIPTION: ------------------------ opt. last/alt. flags This is the last or alternate ID flags accessed within this VIC. COMMANDS: --------- "PK ID -r2" Returns the last/alt. ID flags. "PK ID -c2" Clears the last/alt. ID flags from the PK-file. "PK ID -c2 [ID flags]" Sets the last/alt. ID flags to the given ID flags. ID: FIELD 3 DESCRIPTION: ------------------------ ID-filename@line# This is the default ID-file and line number to use in this VIC. It is the default starting position to use when the ID stack is empty (this is what "empty" is replaced with. This value can contain a stack of ID-filename@line# values. If this value is empty when the stack is, then ID outputs nothing or an error message that no ID-file is given (when error out flag is set.) COMMANDS: --------- "PK ID -r3" Returns the contents of this field 3. "PK ID -c3" Clears the contents of this field 3 from the PK-file. "PK ID -c3 [ID-filename@line#,....]" Sets field 3 to the given ID-filename@line# value(s). ID: FIELD 4 DESCRIPTION (second line): ------------------------ ID-filename@line#,...> running stack> This is the ID-file running stack in use in this VIC. If this value is empty then it gets set to the value of ID field 3 upon the use of the ID command. If field 3 is also empty then ID output nothing or an error message that no ID-file is given (if error out flag is set). The ID running stack shows the next file@line# to be processed. When the ID command is issued then the SF stack has "ID-out" added to the stack to indicate where it is getting it's input from. COMMANDS: --------- "PK ID -r4" Returns the contents of this field 4. "PK ID -c4" Clears the contents of this field 4 from the PK-file. "PK ID -c4 [ID-filename@line#,...]" Sets field 4 to the given ID-filename@line#,... value(s). KE: LINE DESCRIPTION: ===================== KE: Master-teeth ; last/alt. M-teeth ; KE-filename : opt. last/alt. set --------------------------------------------------- KE data is used by IQ and ID to cause additional constraints to be applied in what IQ and ID will output. Think of KE in terms of key to unlock access to specific knowledge/data, and Master-Teeth like Master-Keys that unlock many such knowledge/data parts. Having NO Master-Teeth defaults in a wild card '*' that matches all. Hence, the application of KEys causes specified constraints to be applied. Master Teeth: **** The setting of the Master Teeth ..... There is currently no reference for KE Master-Teeth but the functionality used to manipulate Master-Teeth should probably include, besides the default of replacing the complete Master-Teeth field, the option to add (+) a tooth "+tooth" from the list of Teeth and to remove (-) a tooth "-tooth" from the list. By just adding a '+' or '-' to the beginning of the tooth to add or subtract it from the Master-Teeth field. These would of course be used in the commands: "PK KE -c# [KE Master-Teeth]" I.E. "PK KE -c1 -loose -tooth +dollar" would remove the Master-teeth "lose" and "tooth" and add the Master-tooth "dollar". Hint: In making the KE file compatible with the OI variable file it is likely that a Master tooth might be like a variable name that points to a variables contents that may contain key teeth (or more than one key.) COMMANDS: --------- "PK KE -?" Opens the hypertext help system window, at "PK KE" help.(???) (an AI command call to a VIC instance to run IQ on a VIC-help.iq file for "PK KE" help which may contain an external call to load a web browser and hypertext/html "PK KE" help page.) "PK KE -r" Returns this first KE: line "PK KE -c" Causes the KE: line to reset to default values, default Master-Teeth in field 1, field 2 left blank and "KE-default-filename" in field 3 position. If the KE-default-file does not exist then KE won't have any constraining effect on IQ or ID usage. "PK KE -c [KE: line]" Changes the first KE: line to the values given. "PK KE" Toggles or switches KE line Fields 1 and 2 contents. Contents of Field 1 becomes content of Field 2 and vice versa. "PK KE x" Switches KE line 1 with KE Line 2. KE: FIELD 1 DESCRIPTION: ------------------------ KE Master-Teeth (current) This is the current KE Master-Teeth accessed within this VIC. COMMANDS: --------- "PK KE -r1" Returns the current KE Master-Teeth. "PK KE -c1" Removes the current KE Master-Teeth from the PK-file. In doing this, the last/alt. KE Master-Teeth are moved to the current position. "PK KE -c1 [KE Master-Teeth]" Sets the current KE Master-Teeth position to the given ME Master-Teeth. This command also moves to the last/alt. KE Master-Teeth position the prior "current" KE Master-Teeth (The KE Master-Teeth being replaced). KE: FIELD 2 DESCRIPTION: ------------------------ opt. last/alt. KE Master-Teeth This is the last or alternate KE Master-Teeth accessed within this VIC and KE line "set". COMMANDS: --------- "PK KE -r2" Returns the last/alt. KE Master-Teeth. "PK KE -c2" Clears the last/alt. KE Master-Teeth from the PK-file. "PK KE -c2 [KE Master-Teeth]" Sets the last/alt. KE Master-Teeth to the given KE Master-Teeth. KE: FIELD 3 DESCRIPTION: ------------------------ KE-filename This is the KE-file to use in this VIC. COMMANDS: --------- "PK KE -r3" Returns the contents of this field 3. "PK KE -c3" Clears the contents of this field 3 from the PK-file. "PK KE -c3 KE-filename" Sets field 3 to the given KE-filename. KE: FIELD 4 DESCRIPTION (second line): ------------------------ opt. last/alt. set This is an alternate or optional full set of the first line of KE "KE: Master-teeth ; last/alt. M-teeth ; KE-filename". There are no field manipulations built in for this second line. It is treated as only one field because you can exchange line 1 and 2, do manipulation and flip back if you need to manipulate the contents with built-in commands. The semi-colon ';' is used to separate fields for line 1. COMMANDS: --------- "PK KE -r4" Returns the contents of this field 4. "PK KE -c4" Clears the contents of this field 4 from the PK-file. "PK KE -c4 [Master-Teeth; last/alt. Master-Teeth; KE-Filename]" Sets field 4 to the given KE value(s).