Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
53
Task/Metaprogramming/REXX/metaprogramming.rexx
Normal file
53
Task/Metaprogramming/REXX/metaprogramming.rexx
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
/*┌───────────────────────────────────────────────────────────────────┐
|
||||
│ The REXX language doesn't allow for the changing or overriding of │
|
||||
│ syntax per se, but any of the built-in-functions (BIFs) can be │
|
||||
│ overridden by just specifying your own. │
|
||||
│ │
|
||||
│ To use the REXX's version of a built-in-function, you simply just │
|
||||
│ enclose the BIF in quotation marks (and uppercase the name). │
|
||||
│ │
|
||||
│ The intent is two-fold: the REXX language doesn't have any │
|
||||
│ reserved words, nor reserved BIFs (Built-In-Functions). │
|
||||
│ │
|
||||
│ So, if you don't know that VERIFY is a BIF, you can just code │
|
||||
│ a subroutine (or function) with that name (or any name), and not │
|
||||
│ worry about your subroutine being pre-empted. │
|
||||
│ │
|
||||
│ Second: if you're not satisfied how a BIF works, you can code │
|
||||
│ your own. This also allows you to front-end a BIF for debugging │
|
||||
│ or modifying the BIF's behavior. │
|
||||
└───────────────────────────────────────────────────────────────────┘ */
|
||||
yyy='123456789abcdefghi'
|
||||
|
||||
rrr = substr(yyy,5) /*returns efghi */
|
||||
mmm = 'SUBSTR'(yyy,5) /*returns 56789abcdefgji */
|
||||
sss = "SUBSTR"(yyy,5) /* (same as above) */
|
||||
exit /*stick a fork in it, we're done.*/
|
||||
|
||||
/*──────────────────────────────────SUBSTR subroutine───────────────────*/
|
||||
substr: return right(arg(1),arg(2))
|
||||
|
||||
/*┌───────────────────────────────────────────────────────────────────┐
|
||||
│ Also, some REXX interpreters treat whitespace(s) as blanks when │
|
||||
│ performing comparisons. Some of the whitespace characters are: │
|
||||
│ │
|
||||
│ NL (newLine) │
|
||||
│ FF (formFeed) │
|
||||
│ VT (vertical tab) │
|
||||
│ HT (horizontal tab or TAB) │
|
||||
│ LF (lineFeed) │
|
||||
│ CR (carriage return) │
|
||||
│ EOF (end-of-file) │
|
||||
│ and/or others. │
|
||||
│ │
|
||||
│ Note that some of the above are ASCII or EBCDIC specific. │
|
||||
│ │
|
||||
│ Some REXX interpreters use the OPTIONS statement to force │
|
||||
│ REXX to only treat blanks as spaces. │
|
||||
│ │
|
||||
│ (Both the verb and option may be in lower/upper/mixed case.) │
|
||||
│ │
|
||||
│ REXX interpreters which don't recognize any option won't treat │
|
||||
│ the (below) statement as an error. │
|
||||
└───────────────────────────────────────────────────────────────────┘ */
|
||||
options strict_white_space_comparisons /*can be in lower/upper/mixed.*/
|
||||
Loading…
Add table
Add a link
Reference in a new issue