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 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 .CMD, 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 cmdfile where cmdfile is a commandfile (default extension .CMD) containing ordinary MCR commands and, optionally, special PIN commands. PIN allows a small number of internal commands, specified in the commandfile, as follows:- $DE - delete the .CMD file on closing $NODE - do not delete the .PRC file on closing $TR - print each command as it is executed $NOTR - do not print each command. $CH cmdfile - chain to file 'cmdfile' Initially PIN starts out with NOTR & NODE. 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. 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 - CMD FILE READ ERROR An error was detected while reading the command file. Check the file and resubmit it if necessary. 10. PIN - CMD FILE CLOSE ERROR An error was detected while closing the command file. Check the file to determine the cause of the error. 11. PIN - ONLY SINGLE LINE 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 Guide ============ PIN is very simple in construction. It obtains the MCR command line, parse the filename given via ASCFNM, and accesses the file for read via F11ACP QIO primitives. It then reads each record in the file (performing its own deblocking), 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 deaccesses the file and exits. It handles all the internal commands other than $CH by simply setting/clearing tracing/deletion flags which are tested when required. On encountering a $CH it simply deaccesses the current file and branches back to treat the line as if it had been typed in the first place. PIN is a non-privileged task with a taskname of ...PIN, using 2 units (Unit 1 should be assigned to SY: and Unit 2 to TI:) and a stack of 20.