While SPA provides a powerful set of tools with which a user can manipulate data, it is neccessarily incomplete of all functions an astronomer may use. Unfortunately, developing new tools for the SPA program requires some familiarity with the internal workings of the program itself and therefore, is not recommended. For those brazen souls who wish to augment the abilities of the program, an itemized list of steps is provided below. It is recommended that programmers study and understand some representative subroutines of the various type of functions (see line.f for 1 1 function, see math2.f for 2 1 function, see gen.f for an internally looped 1 1 function, see av.f for n 1 function, and see ss.f for n n function) since the program treats these much differently, in particular, how the data is blocked into the memory of the program and stored for later use.
Once a subroutine has been written, there are several steps necessary to incorporate the new function into the program. These include editing the function constant common block FCONC.INC if the new subroutine requires additional function constants, editing the subroutine incon.f which controls the input of the function constants from the user, editing the file act.f which actually calls the new subroutine, and editing spi.pgm which defines the new function in the program within the common block CODES.INC. This definition includes the name of the function and the type of function 1 1, (i.e. 1 1, 2 1, n n or n 1). In addition, the spi program provides defaults for any new function constants within the block data code. Once changes to these files have been made, one needs to recompile the spa and spi programs and reinitialize the function constants and codes within the S file with the spi program.