Anonymous user
Pragmatic directives: Difference between revisions
m
→{{header|REXX}}: changed first bullet points into a "blue box".
(→signal on lostdigits: added a couple of clarifying words (verb tense).) |
m (→{{header|REXX}}: changed first bullet points into a "blue box".) |
||
Line 372:
=={{header|REXX}}==
The REXX language has several pragmatic statements:
===numeric digits===
The '''NUMERIC DIGITS nnn''' statement is used to specify to the REXX interpreter how many
<br>(significant) decimal digits are to be used in calculating and storing numbers.▼
▲are to be used in calculating and storing numbers.
'''nnn''' can be an expression that evaluates to a positive integer.
If '''nnn''' is omitted, it defaults to '''9'''.
If no '''numeric digits''' statement is used, the default is '''9'''.
It must be greater than the (current) '''NUMERIC FUZZ''' setting.
===numeric fuzz===
The '''NUMERIC FUZZ nnn''' statement is used to specify to the REXX interpreter how many
<br>decimal digits (at full precision) will be ignored while performing an arithmetic▼
<br>comparison. ▼
▲full precision) will be ignored while performing an arithmetic
▲<br>comparison.
'''nnn''' can be an expression that evaluates to a non-negative integer.
If '''nnn''' is omitted, it defaults to '''0'''.
If no '''numeric fuzz''' statement is used, the default for REXX programs is '''0'''.
It must be less than the (current) '''NUMERIC DIGITS''' setting.
The result of using a positive value for '''FUZZ''' is that the REXX interpreter (temporarily) reduces
<br>the number of '''NUMERIC DIGITS''' by the '''FUZZ''' value before an arithmetic comparison.▼
▲the '''FUZZ''' value before an arithmetic comparison.
This means that arithmetic comparisons are performed with the precision of
Line 431 ⟶ 420:
===numeric form===
The '''NUMERIC FORM''' statement is used to cause the REXX interpreter to use a specific form of
<br>exponential format if the result of an arithmetic operation requires the use of exponential notation▼
▲<br>exponential format if the result of an arithmetic
<br>with the current value of '''numeric digits'''.
Line 446 ⟶ 433:
The option can be in upper/lower/mixed case.
If no '''numeric form''' statement is used, the default for REXX programs is '''scientific'''.
===options===
The '''OPTIONS''' statement is used to specify to the REXX interpreter on such matters on how to
<br>process the source (statements), possibly (for instance) whether or not ''double byte character strings'' ▼
<br>are present, or possibly cause the REXX interpreter to force compliance to some particular rule or▼
▲<br>process the source (statements), possibly (for instance) whether or
▲cause the REXX interpreter to force compliance to some particular rule or
<br>REXX (program) coding standards.
There can be any number of options listed (or none).
Each particular REXX interpreters have their own '''options''', so it isn't considered an error if some
<br>option isn't supported (or recognized) by another REXX interpreter.
Some options are global in nature, others can be enabled and disabled.
Some REXX interpreters also have a way to specify certain options via the ''command-line''
<br>(also known as the ''C.L.'').
===trace===
The '''TRACE''' statement is used to cause the REXX interpreter to turn ''off'' or ''on'' certain tracing
<br>facilities for the REXX interpreter.
Most tracing options causes some sort of output (tracing of statements or values of clauses) to be
<br>emitted to the console (terminal).
The output (tracing information) written to the terminal is usually quite distinctive and can be easily
<br>recognized.
There are a number of options for the '''trace''' instruction, and they won't be explained here.
===signal on lostdigits===
If the REXX interpreter detects that a result of any arithmetic operation results in the loss of any
<br>decimal digits, control branches to the label '''lostdigits'''. The label may be in mixed case.▼
▲label '''lostdigits'''. The label may be in mixed case.
Not all REXXes support this condition (option).
This condition is raised when the number of significant decimal digits in the result of an arithmetic
<br>operation that would exceed the currently defined number of digits via '''numeric digits'''.▼
▲<br>operation that would exceed the currently defined number
===signal off lostdigits===
This indicates to take the default action which is quietly ignore the condition and continue
<br>execution of the REXX program.
===signal on novalue===
If the REXX interpreter detects an uninitialized variable is used in an evaluated expression, control
<br>branches to the label '''novalue'''. The label may be in mixed case.▼
▲<br>branches to the label '''novalue'''. The label
===signal off novalue===
This indicates to take the default action which is to quietly return the value of the uppercase version
<br>of the variable name and continue execution of the REXX program.
===signal on syntax===
If the REXX interpreter detects a syntax error in the REXX program, (and the REXX interpreter
<br>determines that the error can still be handled by the erroneous REXX program), control branches▼
▲<br>determines that the error can still be handled by the erroneous REXX
<br>to the label '''syntax'''. The label may be in mixed case.
===signal off syntax===
This indicates to take the default action which REXX issues an error message and terminates the
<br>REXX program.
===signal on error; call on error===
If the REXX interpreter detects a non-zero return code from a host system command issued by
<br>the REXX program, control branches to the label '''error'''. The label may be in mixed case.▼
▲label '''error'''. The label may be in mixed case.
===signal off error; call off error===
This indicates to take the default action which means the special variable '''RC''' ('''R'''eturn '''C'''ode)
<br>is quietly defined, and execution continues of the REXX program.
===signal on failure; call on failure===
If the REXX interpreter detects a failure from a host system command issued by the REXX
<br>program, control branches to the label '''failure'''. The label may be in mixed case.▼
▲label '''failure'''. The label may be in mixed case.
===signal off failure; call off failure===
This indicates to take the default action which means the special variable '''RC''' ('''R'''eturn '''C'''ode)
<br>is quietly defined, and execution continues of the REXX program.
===signal on halt; call on halt===
If the REXX interpreter detects an external interrupt is made to interrupt execution of the REXX
<br>program, control branches to the label '''halt'''. The label may be in mixed case.▼
<br>The ''external interrupt'' varies with which operating system is being used.▼
▲label '''halt'''. The label may be in mixed case.
▲<br>The ''external interrupt'' varies with which operating system
===signal off halt; call off halt===
This indicates to take the default action which normally means a message is issued and the
<br>execution of the REXX program is terminated.
===signal on notready; call on notready===
If the REXX interpreter detects some kind of problem with stream I/O (this varies with each
<br>REXX interpreter), control branches to the label '''notready'''. The label may be in mixed case.▼
▲label '''notready'''. The label may be in mixed case.
===signal off notready; call off notready===
This indicates to take the default action which is to quietly resume execution of the REXX program.
Not all REXXes support this condition (option).
===scope===
The scope for the all the above statements (except for '''options'''), if issued in the main program,
<br>will be in effect for all internal routines (subroutines/functions/procedures).
If the above statements are issued in an internal routine, upon return from that routine, the
▲<br>original status is restore (to just before the
For external routines, the defaults are used. <br><br>
|