PIN - Procedure Interpreter =========================== Users' Guide ============ The Indirect Command File Processor (AT.) is an exceptionally flexible and useful program. Unfortunately it is also very big, and for the user who only wishes to use it to do compilations and taskbuilds (or suchlike) sequentially on a small system can be very inefficient in terms of system resources. PIN (Procedure INterpreter) is a task 1/4 to 1/6 the size of the Indirect File processor which is used identically to ...AT. to control the assembly and taskbuild process during program development. It does not recognize the special ...AT. commands but only accepts one line MCR type commands (and a very limited number of special PIN commands). If during the execution of any command a fatal error is encountered, PIN will cease execution of the command file and allow the user to correct the problem - the command line creating the error is displayed. By default, other command lines are not displayed. PIN assumes that the command file given to it will have the extension .PRC (For PRoCedure), but if a different extension is explicitly used, PIN will use that name in looking for the command file. PIN is invoked by typing PIN procedure_file or #procedure_file where is a commandfile (default extension .PRC) containing ordinary MCR commands and, optionally, special PIN commands. The second form of the PIN command (via the #) is available only if a system has installed a SLP patch to MCRDIS (MCR...) and indicates that the procedure file is to be SPAWNED directly to MCR rather than indirectly to MCR via ...AT. PIN allows a small number of internal commands, specified in the commandfile, as follows:- $COW - Continue on Warning Exit status (the default). $DE - delete the .CMD file on closing. $EOW - Exit on Warning status. $NODE - do not delete the .PRC file on closing (the default). $NOTR - do not print each command. $TR - print each command as it is executed. Initially PIN starts out with $COW, $NOTR, and $ NODE. Page 2 PIN Error Messages ================== PIN may report one of the following error messages:- 1. PIN - Syntax error The commandline contained less than four characters - i.e. no commandfile was specified. 2. PIN - Illegal file name PIN could not parse the specified file. Correct the filename and respecify the line. 3. PIN - File open error PIN could not open the specified file. Correct the problem and submit the line. 4. PIN - No such file The specified commandfile does not exist. Resubmit the line specifying a valid filename. 5. PIN - Spawn failure The Spawn directive failed - probably because it was not included in the System Generation. PIN cannot operate without the Spawn Directive. 6. PIN - Stop for Event Flag failed The 'Stop for Event Flag' directive failed - probably because it was not included in the System Generation. PIN cannot operate without the Stop for Event Flag Directive. 7. PIN - WARNING, Exit with non-fatal error A command spawned by PIN resulted in a 'non-fatal' exit status (2). PIN prints out the current line and continues unless $EOW has preceeded the occurence of the error. 8. PIN - FATAL, Exit with severe error A command spawned by PIN resulted in a 'fatal' exit status (4). PIN prints out the current line and exits. 9. PIN - Procedure file read error An error was detected while reading the command procedure file. Check the file and resubmit it if necessary. Page 3 10. PIN - Procedure file close error An error was detected while closing the command procedure file. Check the file to determine the cause of the error. 11. PIN - Only single line, valid MCR commands allowed A command line was detected that was not a valid MCR command line, nor an internal command. Remove the offending line and resubmit the commandfile. 12. PIN - Unknown internal command A command line was detected that started with a $ (indicating an internal command) but which did not contain a valid internal command. Correct the offending line and resubmit the commandfile. PIN - Procedure INterpreter =========================== System Instalation Guide ======================== PIN is very simple in construction. It obtains the MCR command line using GCML$, parses the filename given via CSI$1 and opens the file for read. It then reads each record in the file and checks to see if it is an internal command and if not (and it is valid for MCR) spawns it to MCR, checking the exit status and acting accordingly. When all commands are processed it closes the file and exits. It handles all the internal commands by simply setting/clearing action flags which are tested when required. PIN is a non-privileged task with a taskname of ...PIN, using 2 units (Unit 1 is assigned to SY: and Unit 2 to TI:). PIN is built using the command file PIN.CMD. By default it builds with FCSRES. If your system does not have FCSRES, PIN.CMD should be edited to remove references to FCSRES. A HELP file PIN.HLP exists and can be added to the HELP files on LB:[1,2] (or LB1:[1,2]). An alternate version of PIN which uses direct file access QIO's to F11ACP rather than calls to FCS was submitted on the RSX Spring 81 symposium tape by Phil Stephensen-Payne. For systems which do not have an FCSRES it will build a small, 2Kw version of PIN. He also adds a $CH switch to allow chaining from one PIN .PRC file to another. While his version looks very good, and in all probability works as well as this version, the PIN supplied with KMSKIT will continue to use FCS/FCSRES. There are several reasons Page 4 for this. First, using the GCML/CSI$1 interface guarantees that PIN can parse and open the procedure file no matter what DEC does. DEC might change or modify F11ACP to add new functionality. This happended in V4.0 with MTAACP. The QIO calls required to access files on tape changed and existing programs which did all file I/O on the QIO level ceased to work. Second, if FCS is used for file I/O, PIN is migratable to a VAX system. Third, using FCS, PIN is easily upgraded to using either BIG-Buffering or Multi-Buffering for applications that require very high throughput for commands.