B Adding further routines

This section describes how a new routine or set of routines might be added to the existing library. The development of the library is coordinated by David Berry.

Investigate the functionality in NAG in a particular area as currently used by applications. Consult the NAG documentation for this.
Consider what functionality is actually necessary. This is often an abstraction from what NAG provides: Say, NAG may have a choice of routines or algorithms, or a set of NAG routines may be closely related.
Look at what is available in the Public Domain. Use the GAMS decision tree on the World Wide Web and give preference to SLATEC routines. Also give preference to double precision routines.
Make up your mind as to which routines from the Public Domain will be necessary and how they will cover completely and consistently a particular area of functionality. You will now have a list of one or a few user-callable routines that you want to incorporate into the library.
Down-load the code for each user-callable routine you picked. Make sure you get all code needed, including subsidiary routines. Use the ‘fullsource’ anchor in GAMS. Check that the transfer was successful, Mosaic will not warn you if the final five per cent are missing.
Go through the single-file source code and change the routine names. Whenever possible the old names should just be preceded by ‘PDA_’.
Split the full source into Fortran modules with ‘fsplit’.
If the routine PDA_XERMSG is part of the full source, SLATEC error handling is involved. If PDA_XERROR is present the old SLATEC error handling is involved. Remove PDA_XERMSG or PDA_XERROR and their subsidiaries PDA_FDUMP, PDA_J4SAVE, PDA_XERABT, PDA_XERCNT, PDA_XERCTL, PDA_XERHTL, PDA_XERPRN, PDA_XERPRT, PDA_XERRWV, PDA_XERSAV, PDA_XERSVE, PDA_XGETUA. Also remove PDA_I1MACH.
Check if there are routine name conflicts with the existing library. Check if modules of the same name are compatible or identical. Remove the redundant routines.
Modify the error handling and message output.
Register the new source files in the ‘makefile’. Also register any test programs. Test programs have capitalised names, library routines have lower-case names.
Modify pda_test.f to make a trivial call to the user-callable routines that you introduced. pda_test.f can be compiled and linked to see if all modules necessary are present, it cannot be executed.
Update the source of this document.

If you write new code for the library: