Pragmatic directives: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: changed wording.) |
m (→{{header|REXX}}: added SIGNAL & CALL on|off conditions.) |
||
Line 372: | Line 372: | ||
=={{header|REXX}}== |
=={{header|REXX}}== |
||
The REXX language has |
The REXX language has several pragmatic statements: |
||
::* NUMERIC DIGITS {nnn} |
::* NUMERIC DIGITS {nnn} |
||
::* NUMERIC FORM {ENGINEERING |
::* NUMERIC FORM {ENGINEERING │ SCIENTIFIC} |
||
::* NUMERIC FUZZ {nnn} |
::* NUMERIC FUZZ {nnn} |
||
::* OPTIONS {xxx yyy zzz} |
::* OPTIONS {xxx yyy zzz} |
||
::* TRACE {options} |
::* TRACE {options} |
||
::* SIGNAL {ON│OFF} SYNTAX |
|||
::* SIGNAL {ON│OFF} NOVALUE |
|||
::* SIGNAL {ON│OFF} LOSTDIGITS |
|||
::* SIGNAL│CALL {ON│OFF} ERROR |
|||
::* SIGNAL│CALL {ON│OFF} HALT |
|||
::* SIGNAL│CALL {ON│OFF} NOTREADY |
|||
===numeric digits=== |
===numeric digits=== |
||
The '''NUMERIC DIGITS nnn''' statement is used to specify |
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. |
|||
<br>(significant) decimal digits |
|||
are to be used in calculating and storing numbers. |
|||
'''nnn''' can be an expression that evaluates to a |
'''nnn''' can be an expression that evaluates to a |
||
positive integer. |
|||
If '''nnn''' is omitted, it defaults to '''9'''. |
If '''nnn''' is omitted, it defaults to '''9'''. |
||
If no '''numeric digits''' statement is used, the |
If no '''numeric digits''' statement is used, the |
||
default is '''9'''. |
|||
It must be greater than the (current) '''NUMERIC FUZZ''' setting. |
It must be greater than the (current) '''NUMERIC FUZZ''' setting. |
||
===numeric fuzz=== |
===numeric fuzz=== |
||
The '''NUMERIC FUZZ nnn''' statement is used to |
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 arithmetic |
|||
<br>decimal digits (at |
|||
<br>comparisons. |
|||
full precision) will be ignored while performing an arithmetic |
|||
<br>comparison. |
|||
'''nnn''' can be an expression that evaluates to a |
'''nnn''' can be an expression that evaluates to a |
||
non-negative integer. |
|||
If '''nnn''' is omitted, it defaults to '''0'''. |
If '''nnn''' is omitted, it defaults to '''0'''. |
||
If no '''numeric fuzz''' statement is used, the |
If no '''numeric fuzz''' statement is used, the |
||
default for REXX programs is '''0'''. |
|||
It must be less than the |
It must be less than the |
||
(current) '''NUMERIC DIGITS''' setting. |
|||
The result of using a positive value for '''FUZZ''' is |
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. |
|||
<br>the number of '''NUMERIC DIGITS''' by |
|||
the '''FUZZ''' value before an arithmetic comparison. |
|||
This means that arithmetic comparisons are performed with the precision of |
This means that arithmetic comparisons are performed with the precision of |
||
Line 413: | Line 430: | ||
===numeric form=== |
===numeric form=== |
||
The '''NUMERIC FORM''' statement is used to |
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 |
|||
operation requires the use of exponential notation |
|||
<br>with the current value of '''numeric digits'''. |
<br>with the current value of '''numeric digits'''. |
||
Line 426: | Line 445: | ||
The option can be in upper/lower/mixed case. |
The option can be in upper/lower/mixed case. |
||
If no '''numeric form''' statement is used, the |
If no '''numeric form''' statement is used, the |
||
default for REXX programs is '''scientific'''. |
|||
===options=== |
===options=== |
||
The '''OPTIONS''' statement is used to specify |
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>process the source (statements), possibly (for instance) whether or |
|||
<br>are present, or possibly cause the REXX interpreter to force compliance to some particular rule or |
|||
not ''double byte character strings'' |
|||
<br>are present, or possibly |
|||
cause the REXX interpreter to force compliance to some particular rule or |
|||
<br>REXX (program) coding standards. |
<br>REXX (program) coding standards. |
||
There can be any number of options listed (or none). |
There can be any number of options listed (or none). |
||
Each particular REXX interpreters have their |
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. |
<br>option isn't supported (or recognized) by another REXX interpreter. |
||
Some options are global in nature, others can be enabled and disabled. |
Some options are global in nature, others can be enabled and disabled. |
||
Some REXX interpreters also have a way to specify certain options via |
Some REXX interpreters also have a way to specify certain options via |
||
the ''command-line'' |
|||
<br>(also known as the ''C.L.''). |
<br>(also known as the ''C.L.''). |
||
===trace=== |
===trace=== |
||
The '''TRACE''' statement is used to cause the REXX |
The '''TRACE''' statement is used to cause the REXX |
||
interpreter to turn ''off'' or ''on'' certain tracing |
|||
<br>facilities for the REXX interpreter. |
<br>facilities for the REXX interpreter. |
||
Most tracing options causes some sort of output (tracing of statements |
Most tracing options causes some sort of output (tracing of statements |
||
or values of clauses) to be |
|||
<br>emitted to the console (terminal). |
<br>emitted to the console (terminal). |
||
The output (tracing information) written to the terminal is usually |
The output (tracing information) written to the terminal is usually |
||
quite distinctive and can be easily |
|||
<br>recognized. |
<br>recognized. |
||
There are a number of options for |
|||
There are numerous options for the '''trace''' instruction, and they won't be explained here. <br><br> |
|||
the '''trace''' instruction, and they won't be explained here. |
|||
===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>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 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. |
|||
===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 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. |
|||
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 exceeds the currently defined number |
|||
of digits via '''numeric digits'''. |
|||
===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 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. |
|||
===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 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. |
|||
===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. |
|||
===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). <br><br> |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |