The REXX Language

Download Report

Transcript The REXX Language

IBM ^

z/VM Module 6: The REXX Programming Language

© 2004 IBM Corporation

IBM ^

Module Objectives

 Data structures  IF-THEN-ELSE  SELECT    LOOPS Data formats  An example of formatting numbers and strings are: – – FORMAT( )  SUBSTR( )  numerical string manipulation Input/Output (I/O) functions  STREAM( ) function   CHARIN, LINEIN, CHAROUT, LINEOUT instructions Parameters  To retrieve parameters use: – ARG, PULL, etc.

© 2004 IBM Corporation

IBM ^

Objectives

  Describe REXX and how it works with z/VM Describe how to write REXX programs using:  Comments  Keywords and literal strings  Clauses  Syntax error messages  Explain the use of REXX variables with names, values, and assignments © 2004 IBM Corporation

IBM ^

Objectives continued

 Understand which expressions can be used within a REXX clause:  Operators and terms  Comparisons (equal, and, or)   Functions Learn the control statements for manipulating data flow:  IF – THEN  ELSE keyword  DO LOOPS (repetitive and conditional)  Selection © 2004 IBM Corporation

IBM ^

Objectives continued

    Explain arithmetic, text, and conversational expressions for manipulating and gathering data Show how to issue CMS and CP commands within a REXX EXEC Explain the subcommands and macros used in REXX EXECs Introduce REXX subroutines © 2004 IBM Corporation

IBM ^

What is REXX?

    REstructured eXtended eXecutor language A versatile, easy to use, structured programming language A programming language that is easy for both computer professionals and general users to learn and use A compiler can be used to translate REXX source programs into compiled programs © 2004 IBM Corporation

IBM ^

Features of REXX

       Ease of use Free format Interpreted Built-in functions Parsing capabilities Powerful debugger Relationship with z/VM © 2004 IBM Corporation

IBM ^

How a Program Works

  A REXX program is a list of instructions, something like a recipe A computer communicates with users through questions displayed and answers typed in © 2004 IBM Corporation

IBM ^

Comments in REXX Programs

  Comments in programs: • /* . . . */, this is used for descriptions and explanations Comments with special meaning to CMS • To determine you are writing a REXX program the first line must contain /* . . . */ © 2004 IBM Corporation

IBM ^

Keywords and Literal Strings

    Keywords are instructions that describe an action, such as PULL, IF, and SAY.

REXX reads each individual clause, then processes it before going on to the next (interpreted language).

A literal string is a set of characters bounded by quotation marks.

REXX processes a clause containing a variable by substituting the variable name with the stored data.

© 2004 IBM Corporation

IBM ^

REXX Clauses

 REXX programs consist of these types of clauses: • Instruction • Assignment • Label • Null • Commands © 2004 IBM Corporation

IBM ^

REXX Syntax Errors

© 2004 IBM Corporation

IBM ^

REXX Variables

© 2004 IBM Corporation

IBM ^

Names, Values, and Assignments

   Information stored in a variable is called its value.

It is possible to make variable names anything, but a good idea to create meaningful names.

An instruction that stores a value in a variable or changes its value is called an assignment.

• In formal terms, the syntax might look like this: • symbol = expression © 2004 IBM Corporation

IBM ^

Other Assignments

 The PULL instruction:  Pauses the running program to allow the user to enter data  Can be used to pull in each piece of data or allow the user to enter multiple amounts of data separated by spaces  The ARG instruction:  Like PULL, but data items are entered at the command prompt with the program name © 2004 IBM Corporation

IBM ^

Assignments and Instructions

 One way to write this EXEC is: /* SUBMUL1 EXEC */  ARG first second say first “-” second “=” first-second say first “*” second “=” first*second Another way to write this EXEC is: /* SUBMUL2 EXEC */ say “Enter two numbers to multiply and subtract.” pull first second say first “-” second “=” first-second say first “*” second “=” first*second © 2004 IBM Corporation

IBM ^

REXX Expressions

 Operators and terms:  Operators include +, -, /, %, *, ||  Operators manipulate numbers, strings in quotes, variables, results from function calls and evaluated expressions  Parentheses:  The language processor evaluates the expression inside the parentheses first • The value of 10 * ( 3 || 4 ) is: 340 © 2004 IBM Corporation

IBM ^

REXX Expressions (Comparison, True, and False)

   Comparisons: – > Greater than – – = Equal < Less than TRUE, the computed result is 1 – say 4 < 7 • /* represents a “1”, which means TRUE */ FALSE, the computed result is 0 – say “Chalk” = “Cheese” • /* represents a “0”, which meaning FALSE */ © 2004 IBM Corporation

IBM ^

REXX Expressions ( =, &, | )

   The equal sign (=) can have two meanings – Can be an assignment if found at the beginning after the symbol – An equal sign anywhere else stands for the comparison operator Use the AND (&) operator to write an expression that is true when everything else is also true Use the OR (|) operator when any part of an expression can be true © 2004 IBM Corporation

IBM ^

REXX Functions

   Function calls can be written anywhere in an expression.

The function performs the computation named by the function and returns the result.

When the value of the function has been calculated, the result is put back into the expression in place of the function call.

– An example is: • say 7 + HALF(6) /* becomes 7 + 3 which says “10” */ © 2004 IBM Corporation

IBM ^

Control Statements: IF – THEN

© 2004 IBM Corporation

IBM ^

Examples and Notes: IF - THEN

    The THEN instruction may be an assignment, command, or keyword.

The NOP instruction can be used when no operations are necessary.

An important property of the THEN keyword is that is does not need to start a clause, therefore a semicolon is not needed.

Another example is:  If answer=‘YES’ then say ‘OK!’; else say ‘Why not?’ © 2004 IBM Corporation

IBM ^

Control Statements: ELSE Keyword

© 2004 IBM Corporation

IBM ^

REXX Loops

© 2004 IBM Corporation

IBM ^

Repetitive DO Loops

© 2004 IBM Corporation

IBM ^

Conditional DO Loops

  Conditional loops continue to be executed as long as some condition is satisfied.

The simplest way to code these loops is to use DO FOREVER and LEAVE instructions.

© 2004 IBM Corporation

IBM ^

Conditional Loops: The Choice

 There are three kinds of Conditional Loops  The decision is made before processing starts – Checking occurs before entering the loop and continues after each iteration.

 The decision is made after the first pass through the loop and again after every subsequent pass.

– Data is requested for the user.

 The decision is made during each pass.

– The decision to leave might depend on information obtained during the loop.

© 2004 IBM Corporation

IBM ^

The SELECT Instruction

© 2004 IBM Corporation

IBM ^

A SELECT Instruction

SELECT WHEN morning THEN DO end say “Take shower” say “Eat breakfast.” say “Get ready for work.” end WHEN afternoon THEN DO until ans=Y say “Did you eat lunch? (Y/N) PARSE UPPER PULL ans end otherwise say “It is in the evening -- get ready for bed!!” © 2004 IBM Corporation

IBM ^

Arithmetic

    The addition, subtraction and multiplication operations are performed in the usual way.

– +  Addition –  Subtraction – *  Multiplication – **  Power function The result of a % operation is the whole number portion. The remainder is dropped.

The result of a // operation is the remainder portion. The whole number is dropped.

The result of a / operator is a combination of both operations above.

© 2004 IBM Corporation

IBM ^

Text - Concatenation

© 2004 IBM Corporation

IBM ^

Text – String Manipulation

 SUBSTR() Function:  To select a part of a string to use:  – WORD = “reveal” – say substr(WORD, 2, 3) /* says “eve” */ LENGTH() Function:  To find out the length of a REXX variable: – – WORD = "reveal" say length(WORD) /* says "6" */ © 2004 IBM Corporation

IBM ^

Text – String Manipulation continued

 COPIES():   Produces a number of copies of the string. The arguments are: • • The string to be copied The number of copies required LEFT():  Obtains a string that is padded or truncated on the right  RIGHT():  Obtains a string that is padded or truncated on the left © 2004 IBM Corporation

IBM ^

Conversations – SAY and PULL

    The SAY instruction and its expression are computed and the result is displayed as a new line on the screen.

The PULL instruction is able to collect an answer that has been displayed by the SAY instruction.

The PARSE PULL instruction brings in the data just as it is, without converting the lowercase letters to uppercase.

The UPPER instruction translates the value of one or more variables to uppercase.

© 2004 IBM Corporation

IBM ^

Conversation – Parsing Words

  PULL can also fetch each word into a different variable Using the period as a place holder in this statement (PULL . . lastname .) means to discard the first two words and assign the third word to lastname.

© 2004 IBM Corporation

IBM ^

Issuing Commands to CMS and CP

  The language processor can operate in a number of environments.

Use quotes to avoid errors when writing CMS and CP commands within REXX.

© 2004 IBM Corporation

IBM ^

Issuing Commands – Return Codes

 More examples: 1) access 591 591

DMSACC113S B(591) not attached or invalid device address

2) Ready (00100); copyfile profile exec a = = b (for luck

Invalid parameter LUCK in the option FOR field

Ready (00024); 3) erase junk exec

File JUNK EXEC A not found

Ready (00028) © 2004 IBM Corporation

IBM ^

Why Use a Compiler?

 Advantages of compiling REXX EXECS  Source can be hidden from end users   Load modules are loaded into memory faster Compile programs using this CMS command:  REXXD [

source-file-identifier

] © 2004 IBM Corporation

IBM ^

How to Use the Compiler

© 2004 IBM Corporation

IBM ^

XEDIT Subcommands and Macros

  The first word on the command line is assumed to be a subcommand Words that are not subcommands are interpreted as macros © 2004 IBM Corporation

IBM ^

Subroutines

© 2004 IBM Corporation

IBM ^

Conclusion

  REXX was created as a procedural language that allows programs and algorithms to be written in a clear and structured way.

Topics in this module:  Comments  Clauses  Variables  Expressions  Control statements: – – – – IF THEN ELSE Loops Selection © 2004 IBM Corporation

IBM ^

Glossary

Clause Parsing

– a line of code or a statement within a REXX program – manipulates character strings to let your program read and separate characters, number, and mixed inputs

PL/I

– was developed as the universal programming language, where definitions were not needed © 2004 IBM Corporation

IBM ^

Glossary

 

REXX

– REstrutured eXtneded eXecutor language, a versatile, easy to use structured programming language that is an integral part of z/VM.

REXXCompiler

– translates REXX source programs into compiled programs. (Compiled programs run much faster than interpreted programs.) © 2004 IBM Corporation

IBM ^

References

z/VM: REXX/VM User’s Guide

5962-00 –Version 3 Release 1.0  SC24-

The REXX Language: A Practical Approach to Programming

Michael Cowlishaw –by

Website: Rexx Language Association

© 2004 IBM Corporation