CHAPTER 3 CONVENTIONS FOR PROGRAMMING IN MIIPS
The following conventions should be adopted for the program
modules of the MIIPS package of programs and related programs.
1. Each subroutine for an option should begin with the format given
in the following example.
SUBROUTINE LINEPL
ENTRY LINEPL_SHARE
C This subroutine will plot a cut through a two-dimensional
C file. One can plot a row, a column, or a cut at any angle and
C send the output to the graphics package or the Printronix.
C Cursor input from the Grinnell is also possible.
C First_Name Last_Name, Month Day, Year
C Version 2, First_Name Last_Name, Month Day, Year
C Added code for Trapix
2. Insert comments to explain the variables in an argument list.
"C" and "R" stand for arguments which are given values in the
call or are given values upon return from the
subroutine. For the subroutine PROBABLE2DS(LU,DATA,NX,NY,
ISX,ISY,IBIN,NBINS,PROBABLEVAL,SIGMA) we therefore have:
C LU (C) The logical unit
C DATA (C) The array
C NX (C) Dimension in the X direction and the number
of pixels to be read
C NY (C) Dimension in the Y direction and the number
of pixels to be read
C ISX (C) The starting column in the map (IHED(9) not
subtracted off)
C ISY (C) The starting row in the map (IHED(11) not
subtracted off)
C PROBABLEVAL (R) The most probable value of the pixels in the
array
C SIGMA (R) The mean error
3. Use comments liberally in the source code. When the comment
precedes the code referred to, use the imperative grammatical
case; when the comment follows the code referred to use the
present tense. Put a C in column one and skip two spaces for a
preceding comment and skip two spaces and insert a ! followed by
a space for a following comment. Use mixed cases, e.g.,
C Transfer one file to disk
DO 28 J = 1,64 ! Starts the loop for reading NOVA records
If you are debugging a subroutine which is not one which you
have written, please add comments as you decipher the mess and
bring it up to the conventions described herein. Use good
english, do not abbreviate, avoid the use of indefinite articles
such as "it" which result in ambiguities, and observe the proper
typing conventions of five spaces when indenting and two spaces
Page 2
following a period, colon, and semicolon.
4. Use the tab control on the terminal for the initial indentation
for the source code; keep it at 9, 17, 25, etc. For a
continuation use the tab followed by a numeral.
5. Use columns 1 through 4 for statement labels (right justified)
and then use the tab. FORMAT labels should be 1000 and higher
and should be positioned in the source code at their first usage.
6. Indent an additional 2 spaces for all code within a DO loop or IF
block. For example:
DO I=1,3
CALL OPENMS (I+10,.TRUE.,'FILE','',0)
NROWS(I)=I4MHV(I+10,1,'NROWS',0)
IF (NROWS.NE.512) THEN
CALL MESSAGE('WRONG MAP SIZE')
GO TO 100
ELSE
DO J=1,NROWS
CALL ROMROW(I+10,1,DATA,320,J)
DO II=1,320
DATA(II)=DATA(II)*SCALE
END DO
END DO
END IF
END DO
7. Do not proliferate variable names. The use of arithmetic
expressions within the limits of a DO loop can help in this
regard. Do not use short variable names which give no
description of what the variable's purpose is, e.g., use BUFFRLEN
istead of LB. Avoid the use of implicitly defined variables if
the meaning would be obscured. In order to make the FORTRAN
commands resemble english as much as possible, use END IF rather
than ENDIF and similarly for other commands.
8. For all subroutines called as an option, place the variables in
the COMMON blocks SCRATCHBLOCK and CHARSCRATCHBLOCK. Refer to
the list of additional COMMON blocks in current usage in "MIIPS
Notes".
9. Avoid using dummy variables equated to variables in an argument
list for those subroutines which are called by one of the option
subroutines. Doing so increases the memory requirement. Put the
variable in the SCRATCHBLOCK in the option subroutine.
10. USRINP and associated routines should be used for all
interaction. When using one of the graphics options direct
USRINP prompts to the Grinnell via USRINPG and GTEXT if it has
been assigned and if the prompts number more than one.
11. Keywords passed by USRINP should be in upper case. Other
information messages may be in the normal English mixed cases.
For greater legibility use upper case only for USRINPG.
Page 3
12. Use CALL MESSAGE and GTEXT to output messages and text. If
outputting numbers, write them to the log file also.
l3. The message part of a USRINP or USRINPG call which requires a
logical response should be phrased as a question and terminated
with a "?". Other messages should be phrased as a direction and
should be terminated with a colon.
14. Use "Enter" instead of "Type" when requesting input from the user
as they have different meanings.
15. When requesting file specifications the order of request should
be read file(s) followed by write file(s).
16. The X and Y directions of an image should be referred to as
columns and rows, respectively, and in that order.
17. Under normal circumstances when requesting boundaries from the
user, the request should be of the form:
Enter start-column end-column start-row end-row:
(default = entire map)
BOUNDARIES=