************************************************************************ This is a list of helpful hints and tips to aid in overcoming the problems inherit in debugging a print symbiont. If modifing any code you MUST create the logical name: FLEXISMB_DIR to point to the directory containing these files. To do this you need at least two terminals. One to start the symbiont on and one to use the debugger on. It helps to use a third terminal as the symbiont output device. That way you can see your output as it happens. 1) You MUST be logged in on an account with the UIC of [1,4]. Nothing else will work. 2) Give your process all the privs known to man. 3) Set terminal (the one with the [1,4] UIC) up as an operators console so that error messages come to you (REPLY/ENABLE). 4) Copy your symbiont(.EXE) to SYS$SYSTEM (It MUST reside in SYS$SYSTEM). 5) Do the following to get your symbiont up in debug: a) define/group DBG$INIT debug_command_file (see below) b) define/group DBG$INPUT debug_terminal c) define/group DBG$OUTPUT debug_terminal d) init/que/proc=your_symbiont/on=some_device/terminal queue_name e) start/queue queue_name If you get an error message things get complicated. You should execute the following commands: $ stop/reset/queue queue_name $ delete/queue queue_name $ stop/queue/manager Kill the job controller (process JOB_CONTROL) using $stop/id= or some other method. $ @sys$system:startup jobctl ! Restart the job controller $ start/queue/manager/new ! Start the queue manager ! you need CMKRNL for this Do a SHOW SYSTEM and look for more than one symbiont or processes with no names. There should be only one symbiont running...YOURS (SYMBIONT_0001). If there is more than one symbiont or processes without names...delete them all and do the above again. Go back and do step 4 again. 6) After you start the queue the debug terminal will come up with the debug prompt (assuming you are compiled and linked w/ debug). Set a breakpoint in you routine and then type GO. The terminal that started the queue will return to DCL. 7) Print a file with your symbiont by typing: print/head/queue=queue_name filename.ext 8) The debug prompt will come up again on the debug terminal. At this point debug the symbiont to your liking. After entering DEBUG (during a print operation) each replaced routine is called w/ the START_TASK function identification. ************************************************************************ FOOTNOTES: Helpful DCL commands in validating correct FLEXISMB logical name table structure: show/queue/form show/logical/structure a) Example of debug command file: set source set break page_header go b) DEC people to talk to in Colorado : Liesl, John, and Doug (In this order). c) Even though PAGE_HEADER replaces the system code. It is called to start the task. d) You CANNOT do any FORTRAN I/O in a symbiont because the system redefines SYS$INPUT and SYS$OUTPUT. e) Example of error message when trying to start a user symbiont: %%%%%%%%%%% OPCOM 26-JUN-1985 10:44:22.11 %%%%%%%%%%% Message from user JOB_CONTROL %JBC-E-INVMSG, invalid mailbox message received f) Don't forget to check SYS$SYSTEM: for many copies of JBCSYSQUE.DAT. One of these is created every time you $START/QUEUE/MANAGER/NEW. g) Be careful debugging this on a running system (one with other users). If you have to delete the job controller to clean up the errors, then no one can login...no one can submit jobs to print or batch queues. Deleting the job controller deletes ALL of the queues. h) Futures: 1) Implement BURST pages. See SEPARATE function in the fiche (V4.4, page5 (file burst) (V4.4, page17 (job burst) Calls FILL_JOB_FLAG (need to disable formfeed or handle it???) 2) Support flag page always up functionality. 3) Support 80 column printers (use form size). 4) Put name of queue on flag page (if users want it).