Arguments should be declared and passed in the following order:
Input value used but not modified - Import Input value used and modified - Import/Export Input value not used but modified - Export STATUS value
All arguments should have type and size declared in the appropriate section of the header. CHARACTER arguments should be declared with length (*) since FORTRAN passes length information anyway. Arrays should have their dimensions passed and declared unless this is potentially zero in which case (*) should be used. In the latter case a logical must also be passed such that access to the non-existent array may be prevented.