How to perform integer operations in NONMEM

2 messages 2 people Latest: May 02, 2001

How to perform integer operations in NONMEM

From: Alan Xiao Date: May 01, 2001 technical
From: Alan Xiao <Alan.Xiao@cognigencorp.com> Subject: How to perform integer operations in NONMEM Date: Tue, 01 May 2001 21:40:04 +0000 Hi, NONMEM users, Does any one know how to perform integer operations in NONMEM? For example, I have two variable: Var1 and Var2 and I want calculate integer VarINt as: VarInt = the integer part of Var1/Var2 In regular FORTRAN program, it is simple: VarInt = INT(Var1/Var2) But in NONMEM, the function INT() seems not working. Thanks, Alan.
From: "Gibiansky, Ekaterina" <gibianskye@globomax.com> Subject: RE: How to perform integer operations in NONMEM Date: Wed, 2 May 2001 08:12:38 -0400 Alan, you will have to write a verbatim code to use all functions available in Fortran. I attached the reference from NM Help below. Katya Ekaterina Gibiansky, PhD Senior Scientist GloboMax LLC 7250 Parkway Drive, Suite 430 Hanover, MD 21076 Voice (410) 782-2234 FAX (410) 712-0737 E-mail: gibianskye@globomax.com ------------------------------------------------------------------- | | | 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), 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 C or c, this conforms to the usual FORTRAN syntax for comment lines, and the line is copied unchanged, including C or c. Example: "C this is a comment Continuation lines If blanks occur in positions 1-5 following the initial " and a non-blank in position 6, this conforms to the usual FORTRAN syn- tax for continuation lines, and the text is not moved from these positions. Example: " X +D/E Replacement Rule In $PK, $ERROR, and $PRED, 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 the left-hand side of an assignment statement is such a label, the data record itself is modified ("transgenerated"). Without this rule, only a local variable having the same label would be affected. The character @, immediately before a label, can be used as an "escape" to prevent the label from being replaced under this rule. If the character @ immediately follows the initial ", the entire line is copied unchanged (except that the characters "@ are deleted). 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 section, verbatim and abbreviated code may be freely mixed. Each line of ver- batim 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 COMMON 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 (p. 52)