+--------------------------------------------------------------------+
| |
| VERBATIM CODE |
| |
+--------------------------------------------------------------------+
MEANING: FORTRAN statements
CONTEXT: Abbreviated code
USAGE:
" verbatim line
DISCUSSION:
Verbatim code is FORTRAN code within a block of abbreviated code that
is to be copied by NM-TRAN to the generated FORTRAN subroutine. It is
not itself regarded as abbreviated code. Such code is marked by hav-
ing the character " as the first non-blank character. The " is
dropped and the characters to the right are copied as-is to columns
1-72 of the generated subroutine. Lines of verbatim code can include
any FORTRAN statements: comment, declaration (e.g., INTEGER, COMMON,
USE), I/O, CALL, assignment, continuation, DO, GOTO, etc.). Lower-
case characters can be used freely, if the FORTRAN compiler permits
them.
NM-TRAN does make some modifications to verbatim code, as follows:
Placement of code
The verbatim code is adjusted as necessary to conform to FORTRAN
column conventions. Alphabetic text that follows the initial ",
or that follows a statement number, is moved to column 7, as
required by FORTRAN, except for:
Comment lines
If the character that immediately follows the initial " is !, |
this conforms to the FORTRAN 90 syntax for comment lines. The |
line is copied unchanged. If the character that immediately fol- |
lows the initial " is C or c or " or *, this conforms to the FOR- |
TRAN 77 syntax for comment lines. The line is copied unchanged, |
but C or c or " or * is replaced by !. Example:
"! this is a comment
Continuation lines
Fortran 77 continuation lines (non-blank in position 6) are not |
permitted with NONMEM 7. Instead, the line to be continued |
should end with character &. Example: |
" X=A & |
" +D/E |
Replacement Rule
In $PK, $ERROR, $DES, $AES, $INFN, and $PRED, in a line of abbre-
viated code labels of items in the data record are replaced by
direct references to the data record itself (either DATREC or
EVTREC, as appropriate). Thus, for example, if such a label
occurs as the left-hand side of an assignment statement, then
without this rule, when the statement is executed, the value of a
local variable having the label is modified, whereas with the
rule, an item in the data record is modified.
The character @, immediately before a label, can be used as an
"escape" to prevent the label from being replaced. If the character @
immediately follows the initial ", none of the labels occuring in the
line are replaced.
Labels occurring in common statements or as subroutine arguments are
never replaced.
Low-value Character
Tab characters (and other characters that are smaller than blank
in the computer's collating sequence, such as carriage return ^M)
are permitted in verbatim code. With NONMEM 7, the last non- |
blank character on the line is replaced by a space if it is a |
low-value character. This permits DOS-type line endings ^M.
By default, all verbatim code goes in the main section of code and is
called MAIN verbatim code. (The main section follows declarations and
initial executable code inserted by NM-TRAN.) Within the main sec-
tion, verbatim and abbreviated code may be freely mixed. Each line of
verbatim code is positioned in the generated code after all code gen-
erated from the preceding line of abbreviated code. The user may
explicitly specify a different location as follows.
FIRST verbatim code
Verbatim lines which must be positioned immediately after the
declarations which are part of the normal subroutine header, and
prior to the FIRST executable statement of the subroutine, must
precede the first line of abbreviated code and must start with
the line "FIRST.
MAIN verbatim code
FIRST verbatim code is normally terminated by the first line of
abbreviated code. If there is both FIRST and MAIN verbatim code,
and/or the main section is to start with verbatim code, the line
"MAIN may be used to separate the FIRST and MAIN verbatim code.
LAST verbatim code
Verbatim lines which are to immediately precede the RETURN state-
ment from the generated subroutine must follow the last line of
abbreviated code and must be preceded by the line "LAST.
Example:
$ERROR
Y=F*(1+ERR(1))
"LAST
" PRINT *,HH(1,1)
This displays values after they have been assigned, immediately
prior to the return.
If any lines of verbatim code are present in a block of abbreviated
code, NM-TRAN generates USE statements appropriate to the kind of
abbreviated code and allows variables undefined in abbreviated code to
be used as right-hand quantities in abbreviated code.
Verbatim code is meant for use by expert users of NONMEM who are able
to understand the generated FORTRAN subroutine and check that the ver-
batim code has the desired effect.
REFERENCES: Guide IV Section IV.I
Go to main index.
Created by nmhelp2html v. 1.0 written by Niclas Jonsson (Modified by AJB 5/2006,11/2007,10/2012)