Xplor-NIH home Documentation |
Next: Example: A Conditional Test Up: X-PLOR Language Previous: Commonly used UNIX variables
Control Statements
In general,
a statement in X-PLOR can be a control statement
or an
application statement.
- X-PLOR-statement:==
-
- control-statement
- application-statement
A control statement allows structured control of the sequence of application statements, such as loops, and conditional tests. It also allows switching the input stream to another file, opening and closing files, and various other operations.
- control-statement
- :==
- @filename
- deals with the fact that initially the parser reads from standard input (which will be FORTRAN unit 5 in most cases). The stream can be switched to another file by using this statement. Upon end of file, the parsing stream is switched back to the previous input. Nested streams are allowed.
- @@filename
- has the same effect as the “@" statement, except when the stream file is invoked within a structured loop statement. In this case, the “@" statement inserts the contents of file filename into the loop and removes the statement in subsequent loop cycles, whereas the “@@" statement reads from filename each time the loop hits the statement. It should be noted that filename can be a symbol. This allows one to loop through a set of different filenames. Nested “@@" statements are allowed in this release of X-PLOR.
- CLOSe
- filename DISPosition=KEEPDELEte END explicitly closes a specified file. Normally this operation is done automatically by X-PLOR, so this statement should be used only in rare cases, such as closing and deleting a file.
- DISPLAY record
- writes the record to a file that is specified by the “SET DISPlay" statement. The record can be any sequence of characters terminated by a carriage return. It may contain symbols that are substituted before the record is written to the file.
- EVALuate evaluate-statement
- manipulates symbols (see Section 2.14).
- FOR
- symbol IN ( { word } ) basic-loop assigns the symbol to a word from the specified set of words (one at a time) and executes the statements within the basic loop.
- FOR
- symbol IN ID selection basic-loop assigns the symbol to the internal atom identifier for all atoms in the selection, and executes the statements within the basic loop (cf. Section 2.15). Care should be taken not to modify the molecular structure within the scope of the basic loop. The selection for the symbols is stored and computed when the loop is initialized, and it is not mapped when atom numbers change.
- IF
- condition THEN
X-PLOR-statement
[{ ELSEIF condition THEN X-PLOR-statement }]
[ ELSE X-PLOR-statement ] END IF depending on the conditions, sends control flow to the appropriate branch. - OPEN filename
- FORMatted = FORMATTED UNFORMATTED ACCESS = READ WRITE APPEND END explicitly opens the specified file. Normally, this operation is done automatically by X-PLOR, and so the statement should be used only in rare cases, such as opening a file with append access.
- REMARKS record
- writes the record to an internal title store. The record can be any sequence of characters terminated by a carriage return. It can contain symbols that are substituted before the record is stored. The internal title store is written to the first lines of output files.
- REWInd filename END
- rewinds the specified file.
- SET set-statement END
- sets various global parameters and options (see Section 2.13).
- WHILe
- condition basic-loop while the condition is true, executes the statements within the basic loop.
- condition
- :== ( word GELE word ) specify that a condition is true if the first word is equal to, not equal to, greater than, less than, greater than or equal to, or less than or equal to the second word, respectively.
- basic-loop
- :== LOOP label
{ X-PLOR-statement
[EXIT label] } END LOOP label represents a basic body of a loop. The label is a string with up to four characters. The EXIT statement allows jumping out of the specified loop (should be part of a conditional statement). Loops may be nested.
Subsections Xplor-NIH 2024-09-13