CHAPTER 2 TESTING NEW SUBROUTINES 2.1 RUNNING A MIIPS SUBPROGRAM FROM A USER AREA A user may write a new subroutine for MIIPS and test it without relinking or altering the main program at all. The procedure is as follows: The subroutine is written as if it were to be installed in the MIIPSOPT's list. The command @UTEST XXXXX is then run where XXXX is the subroutine name. This edits the subroutine, converts it to a program, compiles and links it, and leaves a version USER.EXE ready to run. This seperate program MAY be run independently but if it is more convenient to run it from MIIPS (so that the other options will be available immediately to look at the results) this can be done by setting up a command file USER.COM in the area where MIIPS is to be run. The UTEST and USER command files have the following forms: STRUCTURE OF THE UTEST.COM FILE: $ ON ERROR THEN GOTO END $ ON CONTROL_C THEN GOTO END $ ON CONTROL_Y THEN GOTO END $ IF P1.EQS."" THEN INQUIRE P1 SUBROUTINE $ SET VERIFY $ COPY 'P1.FOR UTEST.FOR $ EDIT UTEST.FOR @UTEST.CMD $ FOR/DEBUG/NOOPT/CHECK=ALL UTEST $ @ULINK.COM UTEST 'P2 $ SET VERIFY $ DELETE UTEST.FOR.*,UTEST.OBJ.* $ REN UTEST.EXE USER.EXE $ END: $ SET NOVERIFY STRUCTURE OF THE UTEST.CMD FILE: ! The ^ is used to represent an escape character See VAX VMS VOL 3A "TEXT EDITING.." p5-57 for an example of how to enter escape characters into a file. FSUBROUTINE PROGRAM USER FENTRY ! Only necessary if you have (ugh) entry points. SRETURN ^/1:*/* STRUCTURE OF THE USER.COM FILE: $ ASSIGN PLOT.PLT FOR079 $ ASSIGN SYS$OUTPUT FOR078 $ ASSIGN SYS$INPUT FOR075 $ ASSIGN RASTER.PLT FOR076 Page 2 $ ASSIGN VECT.RPL FOR053 $ ASSIGN TTC1: TEKTRONIX $ ASSIGN USER.LOG FOR007 $ ASSIGN USR.SVE FOR049 $ ASSIGN SYS$COMMAND: SYS$INPUT: $ RUN/NODEB USER.EXE $ LOGOUT WARNING! if you do aC while in this routine ALL IS LOST! - to recover - do several Y's then several LOGOUT's and then LOGIN again. STRUCTURE OF THE ULINK.COM FILE $ SET VERIFY $ IF P2.NES."" THEN P2:='P2'/LIB, $ LINK/MAP/DEBUG 'P1,'P2- USR$DISK3:[MIIPS.LIB]MIIPS/LIB,- PAN/LIB,- NONLINFIT/LIB,- PAN/LIB,- ARITH/LIB,- PLOT/LIB,- TV/LIB,- BSAD/LIB,- SAD/LIB,- UTILITY/LIB,- SYS$INPUT/OPTIONS SYS$SYSDISK:[SYSLIB]LBRSHR/SHARE $ SET NOVERIFY 2.2 RUNNING ANY PROGRAM FROM A USER AREA A user may wish to write a program which is not part of MIIPS but which calls some of the subroutines and functions used in MIIPS. This is most conviently done by compiling and linking with P1LINK XXXXX, where XXXXX is the program name. See Chapter 2 for this global definition and the command file it calls. A MIIPS subroutine can be tested in a similar way: one writes the program TEST.FOR which calls the MIIPS subroutine. After compiling TEST, one links with P1LINK TEST.