BREXX/370 User’s Guide
- 1. Installation Guide
- 1.1. Introduction
- 1.2. Prerequisites
- 1.3. Preparation of your target MVS38J System
- 1.4. Installation
- 1.4.1. Step 0 - Unzip BREXX/370 Installation File
- 1.4.2. Step 1 - Upload XMIT File
- 1.4.3. Step 2 - Unpack XMIT File
- 1.4.4. Step 3 - Submit $UNPACK JCL of the unpacked Library
- 1.4.5. Step 4 - Submit $INSTALL JCL for the Standard Installation
- 1.4.6. Step 4A- Submit $INSTAPF JCL for the Authorised Installation
- 1.4.7. Step 5 - Submit $TESTRX JCL of the unpacked Library
- 1.4.8. Step 6 - Submit $CLEANUP JCL of the unpacked Library
- 1.4.9. Step 7 - ADD BREXX Libraries into TSO Logon
- 1.4.10. Step 8 - Your Tests
- 1.4.11. Step 9 - Remove old BREXX Libraries (optional)
- 1.5. Additional Settings (optional)
- 2. BREXX Usage
- 3. Tokens and Terms
- 4. Expressions
- 5. Instructions
- 6. Templates for ARG, PULL, and PARSE
- 7. Compound Variable Names
- 8. Special Variables
- 9. Interactive Debugging
- 10. Built-in Functions
- 11. Calling external REXX Scripts or Functions
- 12. BREXX MVS Functions
- 13. Added BREXX Kernel functions and Commands
- 13.1. Functions
ABEND()AFTER()A2E()E2A()BEFORE()BLDL()BASE64ENC()BASE64DEC()B2C()C2B()C2U()D2P()P2D()CEIL()CONSOLE()ENCRYPT()DECRYPT()DEFINED()DUMPIT()DUMPVAR()DATE()DATETIME()Time()FILTER()FLOOR()INT()JOBINFO()JOIN()LEVEL()LINKMVS()LINKPGM()LISTIT()LOCK()UNLOCK()MEMORY()MTT()MTTSCAN()RXCONSOL()NJE38CMD()VLIST()LASTWORD()PEEKS()PEEKA()PEEKU()RACAUTH()RHASH()ROUND()ROTATE()PUTSMF()SUBMIT()SPLIT()SPLITBS()EPOCHTIME()EPOCH2DATE()STIME()USERID()UPPER()LOWER()MOD()VERSION()WAIT()WORDDEL()WORDINS()WORDREP()WTO()XPULL()
- 13.1. Functions
- 14. GLOBAL Variables
- 15. Dataset Functions
- 16. TCP Functions
- 17. TSO REXX Functions
- 18. Matrix and Integer Array functions
- 19. RXLIB functions
- 20. Building TSO Commands
- 21. Callable External Functions
- 22. VSAM User’s Guide
- 23. Formatted screens
- 23.1. Delivered Samples
- 23.2. FSS Limitation
- 23.3. FSS Function Overview
- 23.3.1. FSSINIT Inits the FSS subsystem
- 23.3.2. Principles of Defining Formatted Screens
- 23.3.3. FSSTEXT
- 23.3.4. FSSFIELD
- 23.3.5. Attribute Definition
- 23.3.6. FSSTITLE
- 23.3.7. FSSOPTION
- 23.3.8. FSSCOMMAND
- 23.3.9. FSSTOPLINE
- 23.3.10. FSSMESSAGE
- 23.3.11. FSSZERRSM
- 23.3.12. FSSZERRLM
- 23.3.13. FSSFSET
- 23.3.14. FSSFGET
- 23.3.15. FSSFGETALL
- 23.3.16. FSSCURSOR
- 23.3.17. FSSCOLOUR
- 23.3.18. FSSKEY
- 23.3.19. FSSDISPLAY
- 23.3.20. Get Screen Dimensions
- 23.3.21. Close FSS Environment
- 23.4. Creating a Dialog Manager
- 23.5. Simple Screen Applications
- 23.6. FSSMENU Supporting Menu Screens
- 23.7. FSS Functions as Host Commands
- 23.7.1. INIT FSS Environment
- 23.7.2. Defining a Text Entry
- 23.7.3. Defining a Field Entry
- 23.7.4. Getting Field Content
- 23.7.5. Setting Field Content
- 23.7.6. Setting Cursor to a field
- 23.7.7. Setting Colour
- 23.7.8. Getting action Key
- 23.7.9. Display or Refresh Formatted Screen
- 23.7.10. End or Terminates FSS Environment
- 23.7.11. Get Terminal Width
- 23.7.12. Get Terminal Height
- 24. Implementation Restrictions
- 25. Migration and Upgrade Notices
- 26. About
Indices and tables
This user’s guide documents the BREXX standard functions from https://ftp.gwdg.de/pub/languages/rexx/brexx/html/rx.html as well as the changes and amendments to BREXX to be used on MVS 3.8j.
Credits
BREXX has been developed by Vasilis Vlachoudis, who made it publicly available as freeware for non-commercial purposes.
Jason Winter’s JCC Compiler for compiled BREXX
JCC and the JCC-Library are owned and maintained by him. While not being freeware, Jason allows non-commercial usage and distribution of Software created using JCC through a relaxed license, as long as the complete source code always accompanies those distributions.
Vasilis and Jason explicitly consented to make the JCC based version of BREXX available on TK4-. Thanks to both for their significant valuable contribution to the TK4- MVS 3.8j Tur(n)key system.
The VSAM Interface is based on Steve Scott’s VSAM API.
The FSS Part is based on Tommy sprinkle’s FSS - TSO Full-Screen Services
Daniel Gaeta contributed his EXECIO implementation.
The NJE38DIR load module was extracted out of Bob Polmanter’s NJE38 V2 modules
We wish to thank the following persons for patiently answering our questions and for their support and advice:
Vasilis Vlachoudis
Jürgen Winkelmann
Jason Winter
Wally Mclaughlin
Greg Price
Bob Polmanter
Steve Scott
and many others!
BREXX/370 Source Code
The BREXX/370 Source Code can be found and downloaded at: https://github.com/mvslovers/brexx370/
Some Notes on BREXX Arithmetic Operations
BREXX stores numeric values in the appropriate type format. The benefit compared to save it as strings is a significant performance improvement during calculations. As the expensive string to numeric conversion before and vice versa after arithmetic operations is omitted; this allows speedy calculations without the required conversion overhead.
BREXX supports two numeric types:
Integer Integers are stored in 4-bytes a full word (LONG), this means their range is from -2,147,483,648 to +2,147,483,647
Decimal Numbers Decimal Numbers (decimal numbers with a fractional part) are represented in the double-precision floating-point format (doubleword), the length is 8-bytes consisting of an exponent and the significand (fraction). It consists of 56 bits for the fraction part, 7-bit exponent and one-bit for the sign. This representation is IBM specific and differs slightly from the IIEE 754 floating-point standard.
The precision of floating-point numbers is not as good as decimal packed numbers which are not supported in BREXX (nor in REXX). This means, for example, 2.0 might be stored as 19999999999999999e-17, or for 5.0 you will is stored as 50000000000000003e-17; this is not an error, but the usual behaviour for floating-point numbers. It is caused by the conversion between the numbers of base 10 to base two a bit-exact reversibility is not always given. This effect may build up during arithmetic calculations.