GENERAL The VERSATEC plot spooler is composed of three cooperating processes: 1. RASMX is a slightly modified version of the VERSATEC RASM routine, and actually performs the plotting. RASM is proprietary VERSATEC software, so I cannot include it in this submission. If you have a VERSATEC license, and the source code, see RASMODS.MEM for instructions on how to modify your RASM to run under the spooler. 2. VQ is a privileged detached process, which spawns RASMX as a subprocess. 3. QRX is the user interface; it accepts commands from the user, and ships them to VQ via mailboxes. QRX creates (and deletes) permanent mailboxes, so it must be installed with PRMMBX privilege. In addition, there is a system (permanent) global section maintained by VQ (and looked at by QRX) named SYS$SYSTEM:PLOTQSECT. It is a contiguous file of 20 blocks. (It can be made non-contiguous, at a slight decrease in efficiency, by modifying USEROPEN.MAR.) INSTALLATION Place RASMX, QRX, and VQ in [SYSEXE]. Install QRX as follows: $ MCR INSTALL QRX/PRIV=PRMMBX/OPEN/HEADER ^Z Invoking the VQSTRT command procedure is all that is required to get VQ going. Note that VQ maintains a log file (called PSPOOL.LOG) in the [SYSMGR] directory. It is chuck full of information which is only of use if something goes wrong, perish the thought. Although the current version is locked by VQ, VQ can be asked to switch log files, or stop using the log file entirely. As delivered, VQ writes accounting information to the file SYS$MANAGER:PLOTACC.DAT. This file is opened for APPEND each time a plot finishes, so you can read it between updates. If the file does not exist, or is locked, a new version is created, a la the errlog file. This accounting stuff is necessary because RASMX can be a significant drain on the CPU, which otherwise gets charged against the SYSTEM. The format of the PLOTACC file can be deduced by examining ACCOUNTNG.FOR, and the accounting function can be turned off by setting the constant "do_accounting" to zero in VQ. Once VQ is running, you need to initialize and start the queues. Page 2 You will need to use $ SET COMMAND PQUE to define the operations. The operations available to the queue manager (using PQUE) are in the form of command qualifiers. They are 1. PQUE/INITIALIZE initializes a queue. With /INITIALIZE, you may use 1. /DEVICE=lvxx. The default device is LVA0. 2. /PRINT if there is a printer queue attached to the target device. In this case, VQ will shut down the printer queue to do its plots, then restart it. The default is NOPRINT. 3. NOTE! At this time, only one qualifier may be specified, with the above exception. Attempting to use more than one will result in QRX halting with a nasty message and traceback. 2. /START starts the queue. Equivalent to START/QUEUE. 3. /STOP stops the queue. Equivalent to STOP/QUEUE/NEXT. The current job (if any) is permitted to finish. 4. /DELETE deletes the queue. The queue must be STOPped. 5. /DEVICE=xxxx This qualifier may be used by itself, rather than with /INIT. The queue must have been stopped, and run down, such that the device is no longer allocated; then this allows switching the plot queue to a different plotter without loss of queued plot files. 6. /LOG closes the current log file, if any, and creates a new one. 7. /NOLOG closes the current log file without creating a new one. Logging is then disabled until you issue a PQUE/LOG. All of these operations require privilege, which is granted on the basis of UIC. A list of UIC's is maintained in the global section; it is updated every time VQ starts from the file SYS$MANAGER:QPRIVS.DAT. QPRIVS is a text file, one line per UIC; VQ reads the first six characters of each line and interprets them as a UIC. A sample is enclosed. Incidently, the privileged accounts also get to use PDEL on other people's files! Recompiling and linking either VQ or QRX is straightforward. Page 3 Link either one with the PSPLIB library. If you rebuild QRX, don't forget to re-install it! The source for QRX and VQ are provided as is; the other source programs can be found in FORTLIB.TLB and MARLIB.TLB. If you stop VQ for any reason, the global section should remain intact; when you restart VQ, the queues will come up STOPPED, and any plots that were working when it stopped should be requeued. If things get scrogged for any reason, the command procedure CLEANOUT.COM gets rid of the section, deletes PLOTQSECT.EXE, and deletes VQ's permanent mailbox. Then VQ recreates the section next time it is started. FUTURE PLANS First of all, technical documentation is being prepared. I don't know when it will be ready, but if you send me a written request I will get a copy to you as soon as it is finished. Also, if you think you have found a bug, please call me and let me know. As of now, if RASMX terminates abnormally (error code 1,2, or 4) the only notification is to PSPOOL.LOG, which is virtually useless. Nothing comes out on the plotter, either. I will be putting in some sort of error notification; right now I am thinking of a mail message to the plot owner. There are a couple of new queue management features that are close to being ready. 1. Currently, the /PRINT qualifier can only be used in conjunction with the /INITIALIZE qualifier. This means that you must delete and reinitialize the queue in order to change its output characteristics, thus losing any plot entries which were queued. I am working on making it possible to use this qualifier stand-alone. 2. A /SCRUB qualifier will be added shortly to allow the queue manager to reinitialize the global section without killing VQ. This system was designed to permit running of plot routines other than RASM; If you look at the code, you will notice references to PTEX. At LMSC, we are running a version of Don Knuth's TEX manuscript formatting package. Users can specify PTEX instead of PLOT, and VQ will obligingly run the TEX driver rather than RASMX. I have not included the TEX stuff here, because it is VERY experimental. By the time PSPOOL gets submitted to the Fall 1983 SIG tape, I hope to be able to include it. In the meantime, it may be interesting to you to know that this sort of thing can be rather easily plugged into PSPOOL.