REXX
This presentation is the property of its rightful owner.
Sponsored Links
1 / 97

REXX PowerPoint PPT Presentation


  • 126 Views
  • Uploaded on
  • Presentation posted in: General

REXX. Saravanan Desingh. REXX. An abbreviation of IBMs R estructured EX tended e X ecutor ( REXX ) Language, which allows system command to be used or combined in a routine. Topics. 1 REXX ENVIRONMENT 2 CODING PROGRAM & DATA INSTRUCTIONS 3 DEBUGGING & STORAGE FACILITIES

Download Presentation

REXX

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Rexx

REXX

Saravanan Desingh


Rexx

REXX

  • An abbreviation of IBMs Restructured EXtended eXecutor (REXX) Language, which allows system command to be used or combined in a routine.


Topics

Topics

1 REXX ENVIRONMENT

2 CODING PROGRAM & DATA INSTRUCTIONS

3 DEBUGGING & STORAGE FACILITIES

4 REXX AS A COMMAND LANGUAGE


Rexx

  • REXX ENVIRONMENT

1.1 Creating a REXX program.

1.2 Coding Simple variables and Expressions

1.3 Using Built-in functions


Rexx

1.1 Creating a REXX program

1.1.1 Beginning a REXX Program and using comments

1.1.2 Structuring a REXX Program

1.1.3 Using Basic Terminal I/O

1.1.4 Running a REXX Program


1 1 1 beginning a rexx program and using comments

1.1.1 Beginning a REXX program and using comments

  • Start with Keyword REXX

  • Comments /* and */


1 1 2 structuring a rexx program

1.1.2 Structuring a REXX program

  • Free-Formatted Language

  • A Space to separate the arguments

  • Not Case-Sensitive


1 1 2 structuring a rexx program1

1.1.2 Structuring a REXX program

;Separate 2 Instructions

,Continue an Instruction


1 1 3 basic terminal input and output instruction

1.1.3 Basic terminal input and output instruction

  • SAY

    • Display Text on Screen

  • PULL

    • Retrieves User Input


1 1 4 how to run a rexx program

1.1.4 How to Run a REXX program?

  • Explicit Command

    • TSO Environment

      exec‘DSN’exec

  • Implicit Command

    • SYSPROC or SYSEXEC

      TSOmember-name


Rexx

1.2 Coding Simple variables and Expressions

1.2.1 Using Dynamic Typing

1.2.2 Assigning simple variable

1.2.3 Using Character String Expressions and Operations

1.2.4 Using Arithmetic Expressions and Operations

1.2.5 Using Logical Expression and Operations


1 2 1 using dynamic typing

1.2.1 Using Dynamic Typing

  • Implicit Defining of Variables

  • Defined Dynamically


1 2 2 assigning simple variables

1.2.2 Assigning simple variables

  • Variable Characteristics:

    • Length 1 to 255 characters

    • A-Z, a-z, 0-9

    • !,@,#,$,?,_

    • Should not begin with Digits


1 2 3 using character string expressions and operations

1.2.3 Using Character String Expressions and Operations

  • All Constants & Variables referred as Alphanumeric Character Strings.

  • Character Strings - “” and ‘’

  • Concatenation - ||


1 2 4 using arithmetic expressions and operations

1.2.4 Using Arithmetic Expressions and Operations

  • Denoted with or without Quotes

    12,’12.0’,”12.00”

  • Arithmetic Operators

    +,-,*,/


1 2 5 using logical expressions and operations

1.2.5 Using Logical Expressions and Operations

=

>

<

== (Identical to)

&

|

\ (Not)


Rexx

1.3 Using Built-in functions

1.3.1 Using string manipulation function

1.3.2 Formatting numbers

1.3.3 Using Arithmetic Functions

1.3.4 Using Miscellaneous functions


1 3 1 using string manipulation functions

1.3.1 Using String Manipulation Functions

  • LENGTH(string)

    • No.of characters in the string

  • LEFT(string,no.of chars)

    • Isolate a string within a string

  • SUBSTR(string,startpos,no.of chars)

  • RIGHT(string,no.of chars)


1 3 1 using string manipulation functions1

1.3.1 Using String Manipulation Functions

  • POS(lookfor,seach)

  • INDEX(search,lookfor)

    • searches one string (search) to see if another string (lookfor) is contained in it


1 3 2 formatting numbers

1.3.2 Formatting Numbers

  • FORMAT(nn,ninteger,ndecimal)

    nn - Number or numeric expression to format

    ninterger-Number of digits or blanks to the left of the decimal point.

    ndecimal-Number of places to the right of the decimal point

  • Ex:

    A=123.44

    FORMAT(A,3,1)=123.4


1 3 2 formatting numbers1

1.3.2 Formatting Numbers

  • TRUNC(number,numberofplaces)

  • Ex:

    TRUNC(56.7777,1)=56.7


1 3 3 using arithmetic functions

1.3.3 Using Arithmetic Functions

  • DATATYPE(variable)

    • NUM

    • CHAR


1 3 3 using arithmetic functions1

1.3.3 Using Arithmetic Functions

  • Additional Function:

    • ABS(n)

    • MAX(n1, n2, n3...)

    • MIN(n1, n2, n3….)

    • RANDOM(low, high)

    • SIGN(n)-1, 0 , 1


1 3 4 using miscellaneous function

1.3.4 Using Miscellaneous Function

  • USERID()

  • TIME()Format hh:mm:ss

  • DATE()Format dd mmm yyyy

  • DATE(J)Format yyddd

  • DATE(U)Format mm/dd/yy


Rexx

2 CODING PROGRAM & DATA INSTRUCTIONS

2.1 Using Compound variables

2.2 Coding Conditional and Looping Constructs

2.3 Implementing Subroutines, Procedures, and Functions

2.4 Parsing Data


Rexx

2.1 Using Compound variables

  • Stem

  • No. of Elements

  • Maximum Variable Name Length - 250 Characters

  • Mixed types and Lengths

  • Ex:

    arr.1=“25”

    arr.2=“Steeple-Reach Building”

  • Implementing Arrays and Records


Rexx

  • Initialize array:

    • array.=0

    • arr.=‘’


Rexx

  • Single and Multi dimension array.

    • Ex:

      single.var

      matrix.row.col


Rexx

  • Compound Variables can be used as Data Structures.

  • Ex:

    emprec.empname=‘Bharath’

    emprec.empno=5508

    emprec.sex=‘M’

  • Record like structure.


Rexx

2.2 Coding Conditional and Looping Constructs

2.2.1 Using Conditional Constructs and Compound Statements

2.2.2 Using Looping Constructs

2.2.3 Bypassing and Terminating Loops

2.2.4 Branching on errors


2 2 1 using conditional constructs and compound statements

2.2.1 Using Conditional constructs and Compound statements

  • Conditional group:

    IF-THEN-ELSE

  • Format:

    IF expression THEN

    statement

    ELSE

    statement

  • ELSE optional


2 2 1 using conditional constructs and compound statements1

2.2.1 Using Conditional constructs and Compound statements

  • Grouping the statements:

    DO-END

    Ex:

    DO

    Statement1

    Statement2

    END


2 2 1 using conditional constructs and compound statements2

2.2.1 Using Conditional constructs and Compound statements

  • Selecting several conditions:

    SELECT-WHEN-THEN-OTHERWISE

    * OTHERWISE optional


2 2 2 using looping constructs

2.2.2 Using Looping Constructs

  • Repeating a sequence of instructions.

  • Conditional Looping.

    • DO-WHILE

    • DO-UNTIL


2 2 2 using looping constructs1

2.2.2 Using Looping Constructs

  • Format:

    DO WHILE condition

    Stmts

    END

  • Executes when condition is True.


2 2 2 using looping constructs2

2.2.2 Using Looping Constructs

  • Format:

    DO UNTIL condition

    stmts

    END

  • Executes when condition is False.


2 2 2 using looping constructs3

2.2.2 Using Looping Constructs

  • Numerically Controlled Repetitive Loop:

    • Format:

      DOnooftimes

      stmts

      END

    • Ex:

      DO 5

      say ‘It will be displayed for 5 times’

      END


2 2 2 using looping constructs4

2.2.2 Using Looping Constructs

  • Numerically Controlled Repetitive Loop:(Infinite Looping)

    • Format:

      DOFOREVER

      stmts

      END

    • Ex:

      DO FOREVER

      say ‘Your System is locked by the User’

      END


2 2 2 using looping constructs5

2.2.2 Using Looping Constructs

  • Numerically Controlled Repetitive Loop:

    • Format:

      DO var = initial T0 final

      stmts

      END

    • Ex:

      DO I=1 to 10

      s=s+I

      END


2 2 2 using looping constructs6

2.2.2 Using Looping Constructs

  • BY Clause:

    • Additional variations.

      Ex:

      DO I=1 T0 99 BY 2

      SUM=SUM+I

      END

      ‘I’ will have the values 1,3,5,…99


2 2 2 using looping constructs7

2.2.2 Using Looping Constructs

  • FOR Clause:

    • Controls Maximum no. of Execution.

      Ex:

      DO I=0 BY 5 FOR 20

      SAY I

      END

      ‘I’ will have the values 0,5,10,..95


2 2 2 using looping constructs8

2.2.2 Using Looping Constructs

  • Nested Looping:

    DO …

    DO…

    …….

    END

    END


2 2 3 bypassing and terminating loops

2.2.3 Bypassing and Terminating Loops

  • LEAVE:

    • Terminating explicitly.

  • Ex:

    DO FOREVER

    SAY ‘Enter a String (Exit : X)’

    PULL STR

    IF STR == ‘X’ THEN

    LEAVE

    ELSE

    SAY STR

    END


2 2 3 bypassing and terminating loops1

2.2.3 Bypassing and Terminating Loops

  • ITERATE:

    • Bypass instructions.

  • Ex:

    DO count = 1 TO 10

    IF count = 8 THEN

    ITERATE

    ELSE

    SAY 'Number' count

    END


2 2 4 branching on errors

2.2.4 Branching on Errors

  • SIGNAL:

  • Ex:

    IF RC\=0 THEN

    SIGNALhandle-error

    …….

    handle-error:

    ….


Rexx

2.3 Implementing Subroutines, Procedures, and Functions

2.3.1 Defining Subroutines, Procedures and Functions

2.3.2 Using Subroutines

2.3.3 Using Procedures

2.3.4 Using Functions


2 3 1 defining subroutines procedures and functions

2.3.1 Defining Subroutines, Procedures, and Functions

  • In REXX, use a

    Subroutine for a simple branch and return within a program. All main program variables are available to a subroutine.


2 3 1 defining subroutines procedures and functions1

2.3.1 Defining Subroutines, Procedures, and Functions

  • In REXX, use a

    Proceduresthe same way as you use a subroutine, but use it when you need a routine with its own local variables ‘hidden’ from the main program.


2 3 1 defining subroutines procedures and functions2

2.3.1 Defining Subroutines, Procedures, and Functions

  • In REXX, use a

    Functions to return data to use in the main program. REXX allows functions to either access main program variables or local variables.


2 3 2 using subroutines

2.3.2 Using Subroutines

Main pgm,

…..

CALL subrtn

……

EXIT

subrtn:

……..

RETURN


2 3 3 using procedures

2.3.3 Using Procedures

Main pgm,

…..

CALL subrtn

…...

EXIT

subrtn: PROCEDURE

……..

RETURN


2 3 3 using procedures1

2.3.3 Using Procedures

  • Ex:

    i=4

    call num

    say i

    num: PROCEDURE

    i=3

    RETURN

  • Output is 4.


2 3 3 using procedures2

2.3.3 Using Procedures

  • EXPOSE:

    • To expose caller Variables.

  • Format:

    • ProcName: PROCEDUREEXPOSE arg1 arg2…

  • Argument variables can be constants, expressions or variables


2 3 3 using procedures3

2.3.3 Using Procedures

  • Ex:

    n1=5

    n2=4

    avg=0

    call calc

    say avg

    calc: PROCEDUREEXPOSE n1 n2 avg

    avg=(n1+n2)/2

    RETURN


2 3 3 using procedures4

2.3.3 Using Procedures

  • To pass value, code

    • A CALL with up to 20 Arguments.

  • The ARG, PARSE UPPER ARG and PARSE ARG instruction as the first line in the PROCEDURE.


2 3 3 using procedures5

2.3.3 Using Procedures

  • Ex:

    CALL exproc name1 ecode1

    exproc: PROCEDURE

    ARG name2 ecode2

    say name2

    say ecode2

    RETURN


2 3 3 using procedures6

2.3.3 Using Procedures

  • RESULT:

    • Last value returned from the Procedure or Subroutine

  • Ex:

    RETURN 10

    - 10 is assigned to RESULT.


2 3 4 using functions

2.3.4 Using Functions

  • User-defined Functions:

    • Like Built-in function.

    • Substitutes Expressions.

    • Subroutines or Procedures returns a value can be used as function

  • Format:

    • FunctionName()


2 3 4 using functions1

2.3.4 Using Functions

  • Ex:

    n1=1

    n2=2

    say average(n1 n2)

    average:PROCEDURE

    ARG n1 n2

    RETURN (n1+n2)/2


Rexx

2.4 Parsing Data

2.4.1 Parsing from Terminal Input and Passed Values

2.4.2 Using Additional Parsing Instructions


2 4 1 parsing from terminal input

2.4.1 Parsing from terminal input

  • Format:

    PULL var

    or

    PARSE UPPER PULL var


2 4 1 parsing from terminal input1

2.4.1 Parsing from terminal input

PULL var1 var2…

PARSE UPPER PULL var1 var2..

PARSE PULL var1 var2..


2 4 1 parsing from passed values

2.4.1 Parsing from passed values

  • Receiving data from the another routine

  • Format:

    ARG var1 var2..

    or

    PARSE UPPER ARG var1 var2 ..

  • Without converting to uppercase,

    PARSE ARG var1 var2 …


2 4 2 using additional parsing instructions

2.4.2 Using additional Parsing Instructions

  • PARSE VAR varname var1 var2 …

  • PARSE VALUE expression WITHvar1 var2..


2 4 2 using additional parsing instructions1

2.4.2 Using additional Parsing Instructions

Ex:

PARSE VALUE “hello” || “world”, WITH var1 var2

Var1=”hello”

Var2=”world”


To trap and disregard dummy words

To Trap and disregard dummy words

PARSEVALUE “This is a REXX program” WITH var1 . . var2 .

Var1=”This”

Var2=”REXX”

PARSEVALUE “Hi , Everybody” WITH var1 ‘,’ var2

Var1=”Hi ”

Var2=” Everybody”


Rexx

3 DEBUGGING & STORAGE FACILITIES

3.1 Processing Data on a Stack

3.2 Manipulating Data sets

3.3 Debugging with REXX Facilities


Rexx

3.1 Processing Data on a Stack

3.1.1 Defining the stack

3.1.2 Implementing LIFO and FIFO lists with the stack


3 1 1 defining the stack

3.1.1 Defining the stack

  • Storage Facility in Memory for lists of Data.

  • Access is Sequential.


3 1 2 implementing lifo and fifo lists with the stack

3.1.2 Implementing LIFO and FIFO lists with the stack

  • LIFO- Last In First Out

  • FIFO- First In First Out

  • Default is LIFO


3 1 2 implementing lifo and fifo lists with the stack1

3.1.2 Implementing LIFO and FIFO lists with the stack

PUSH:

To implement a LIFO list on the stack,

PUSH expression


3 1 2 implementing lifo and fifo lists with the stack2

3.1.2 Implementing LIFO and FIFO lists with the stack

  • PULL:

    • As long as the stack contains data lines, PULL accesses the stack. When the stack is empty, PULL accesses the keyboard.

      PULL var

  • QUEUE:

    To implement a FIFO list on the stack,

    QUEUE expression


3 1 2 implementing lifo and fifo lists with the stack3

3.1.2 Implementing LIFO and FIFO lists with the stack

QUEUED():

Built-in function used to determine the no. of items in the stack.

n=QUEUED()


Rexx

3.2 Manipulating Data sets

3.2.1 Reading information from Data sets

3.2.2 Writing information to Datasets

3.2.3 Updating Data sets


Rexx

ALLOC – allocation

EXECIO – input/output operations


3 2 1 reading information from data sets

3.2.1 Reading information from data sets

  • Allocate dataset to a file.

    • “ALLOCF(file) DA(‘DSN’) SHRREUSE”

      file -> Logical File

      DSN-> Physical File


3 2 1 reading information from data sets1

3.2.1 Reading information from data sets

  • Read data into a stack or an array using EXECIO with the DISKR option.

    • “EXECIO * DISKR file(FINIS”

      • using stack

    • “EXECIO * DISKR file(STEM arr. FINIS”

      • using array

        * - all lines.

  • FINIS- close dataset after processing


3 2 1 reading information from data sets2

3.2.1 Reading information from data sets

“EXECIO nooflines DISKR file startlineno (FINIS”

nooflines – no. of lines to read.

Startlineno - starting line to read.

Ex:

“EXECIO 10 DISKR file 100(FINIS”


3 2 1 reading information from data sets3

3.2.1 Reading information from data sets

stack:

“EXECIO * DISKR file(LIFO FINIS” -PUSH command

“EXECIO * DISKR file(FIFO FINIS” -QUEUE command

- Default is FIFO.


3 2 2 writing information to data sets

3.2.2 Writing information to data sets

DISKW in EXECIO

Stack:

EXECIO will continue to pull from the stack until it locates a null line.


3 2 3 updating a data sets

3.2.3 Updating a data sets

  • DISKRU:

    • Disk read for updating.

  • Ex:

    • “EXECIO 1 DISKRU file(LIFO ”


Rexx

3.3 Debugging with REXX Facilities

3.3.1 Tracing Program Flow

3.3.2 Using Special Variables


3 3 1 tracing program flow

3.3.1 Tracing Program Flow

TRACE:

Initiate trace from REXX

TRACE C – Commands

TRACE R - Results

TRACE E - Errors

TRACE N - Normal


3 3 1 tracing program flow1

3.3.1 Tracing Program Flow

Interactive Tracing:

TRACE?option

option- C,R or E.


3 3 2 using special variables

3.3.2 Using Special Variables

SIGL (Signal Line):

Whenever control transfers within a REXX program (usually due to CALL, SIGNAL, or a Function call), SIGL is set to the line number where the branch occurred.


3 3 2 using special variables1

3.3.2 Using Special Variables

Ex:

000003CALL subrtn

000004EXIT

000005

000006 subrtn:

000007 say “This is call from line” SIGL

000008RETURN

O/p:

This is call from line 3


3 3 2 using special variables2

3.3.2 Using Special Variables

RC (Return Code):

Retains the return code of the REXX command executed last.

Ex:

“EXECIO * DISKR f1(FINIS”

readcode=RC


3 3 2 using special variables3

3.3.2 Using Special Variables

  • SIGNAL ON ERROR:

    • Any subsequent nonzero RC cause control to pass to a subroutine named ERROR.


3 3 2 using special variables4

3.3.2 Using Special Variables

SIGNAL ON ERROR:

Ex:

SIGNAL ON ERROR

…..

ERROR:

Say ‘Error no.’ RC ‘occurred at line’ SIGL

EXIT


Rexx

4 REXX AS A COMMAND LANGUAGE

4.1 Interacting with the Command Host Environment

4.2 Interacting with TSO/E


Rexx

4.1 Interacting with the Command Host Environment

  • Directing Commands to the Command Host Environment


Rexx

To change the command Host Environment for all subsequent commands, use the format,

“ADDRESS environment”

Environments:

MVS, TSO, ISPEXEC, ISREDIT, LINK, ATTACH, or NETVIEW.

Ex:

“addressMVS”


Rexx

Verify Environment:

Format:

“SUBCOM environment”

Sets RC to zero if the environment is present, else set to one.


Rexx

4.2 Interacting with TSO/E

4.2.1 TSO Commands

4.2.2 Using OUTTRAP to Pass Data


Rexx

4.2.1 TSO Commands

  • Commonly used TSO Commands

    • ALLOCATE

    • DELETE

    • DSAT

    • EXEC

    • LISTDS


4 2 2 using outtrap to pass data

4.2.2 Using OUTTRAP to pass Data

Traps the output of the subsequent commands and places the trapped lines into an array

Format:

OUTTRAP(“stem.”,Maxnoof lines)

“command”

Ex:

OUTTRAP(“output.”,5)


Rexx

THE END


  • Login