Hello, my name is Martin King and I'm delighted to be your instructor as we embark on this journey to learn the skills required to write execs using the REXX language in z/OS. We're going to cover a lot between lectures, labs, and checkpoint assessments. I hope you'll find this course engaging in educational and that, by the end of it, you too will be a fan of what REXX can do. I hold a personal affinity with REXX. Both REXX and I started out at the same place, the IBM Hursley Laboratory in the UK. But REXX predates me by a fair margin. It definitely got there first. Designed by Mike Cowlishaw, starting back in 1979, REXX was designed from the beginning to make the act of writing programs easier for people. REXX is used for a variety of programming tasks. People will often write REXX execs as personal utilities to help them make a daily work activities easier. Sometimes, REXX execs are written in those front ends to hide highly complex or confusing command syntax, or to reformat the output of commands to be more meaningful or more aesthetically pleasing. REXX has been adapted as a macro language to be used to interact with many program products, including among others, OSPF and the OSPF editor, and several IBM and third-party products. REXX can be used to write prototype programs when designing an application. It's often easier to do this with REXX than with other languages. REXX can also be used to write entire applications as well. You might associate REXX as primarily a language for IBM mainframes, but it's available on a number of vendor platforms. REXX was first made available on an IBM platform in 1983 when it was included as part of VM, SP released 3. In 1987, it was chosen as the SAA, or systems application architecture procedural language, and therefore it was ported to all of IBM's other platforms. REXX first appeared in TSO/E version 2 in 1988. REXX is also available on many non-IBM platforms as well. The version of REXX for Windows platforms is called Open Object REXX, an object-oriented version of the REXX language which also runs classic REXX programs. Our REXX is also available for several other platforms as well. For Linux, there's a software package called Regina, a fully ANSI standards compliant REXX implementation maintained by Mark Hassling and available free of charge of the Internet. NetRexx is a version of REXX developed by Mike Cowlishaw which when compiled, is converted into Java bytecode. REXX is designed to be written very much like Western European languages, particularly English, though the semantics of REXX are more formal than human languages. Basically, if it makes sense to you, it will probably make sense to REXX. There are very few syntactical or grammatical rules in REXX especially compared to many other programming languages. REXX treats datatypes as naturally as possible. The meaning of data depends entirely on its usage. All data is character data. A number is only a number when you use it as a number, for example, when you try to do arithmetic. REXX supports a rich set of operated characters that are arithmetic, comparison, logical, and concatenation operators. Any tool used in a computing environment must be reliable. For a programming language, this means that language instructions such as syntax, should do what the user expects. If a feature or language element is misused by accident, will produce unpredictable results. This can be termed as high astonishment factor and is undesirable. REXX strives to support a very low astonishment factor. REXX provides no mechanism for declaring variables. Of course, you may document and initialize variables at the beginning of a program, but it's often not necessary to do so. When you need to use a variable, simply make up a variable name. The basic REXX language is independent of the system and hardware on which it runs. The basic language is the same on all platforms on which it's supported. It's only where unique environmental interaction takes place, such as performing IO, executing system commands that system independence is enforced. For example, you could not expect to successfully execute a REXX exec containing a TSO command on a VM system. The grammar and syntax of REXX is very much like natural languages. It's relatively easy to learn and use, especially when compared to other programming languages like C. REXX exec may be interpreted, which means that you execute the source code directly, or it may be compiled just as other programming languages do. The REXX language is small. There are only a grand total of 23 instructions to learn. But REXX does include a rich set of built-in functions that perform a wide variety of tasks. There's no such thing as data typing in REXX, all data is character data, therefore, there's no need to declare variables at the beginning of the program. Indeed, REXX provides no mechanism for doing this. REXX has very strong data parsing capabilities. Input data can be accepted from a variety of sources and can be broken up and assigned to variables in many different ways. There are also a number of debugging tools available in REXX. Various routines are available to interface REXX exec with programs written in other languages. Finally, REXX isn't easily extendable language. Many vendors have adapted REXX as the driving language for their program products. In the next video, we'll look at some uses of REXX and how we're going to learn it.