20-Feb-2009 The following are suggested guidelines for IDL procedures to be submitted to the IDL Astronomy Library (1) Each procedure should include documentation in a format similar to that described in the file $IDL_DIR/examples/template.pro (Unix) and used in the standard IDL Users Library. The documentation must be bracketed by ;+ and ;- symbols so that it may be extracted by the help software. The NAME: and CALLING SEQUENCE: fields must be used and the purpose and types of all parameters and keywords should be explained. Following the NAME: field, there should be a PURPOSE: field giving a one-line description. Any further description can then be supplied under a (optional) EXPLANATION: field. (2) The use of function calls is discouraged. If a function call is used it should have name that is not likely to be used as an array in another unrelated program, e.g. DAO_VALUE() is probably O.K, but VALUE() is not. (3) The procedures should be as platform independent as possible. This generally means having IF statements when spawning to the operating system, e.g. if !version.os_family EQ 'MacOS' then nozero1 = 0 (4) The procedure should display the calling sequence if insufficient parameters are supplied. Keyword parameters should always be optional. (5) The use of non-standard system variables is discouraged. For historical reasons, the IDL Users Library currently uses three extra system variables that are added with the DEFSYSV procedure. They are !PRIV - Used in a couple of the database programs. Needs to be set when modifying a database. !TEXTOUT - Used in the program TEXTOPEN which is called by the database and several other programs. Programs which use this non-standard system variable also allow a keyword TEXTOUT to be used instead of the system variable !TEXTUNIT - Logical output unit number used by TEXTOPEN These three additional system variables can be added to one's session using the procedure ASTROLIB.