slide1
Download
Skip this Video
Download Presentation
REXX

Loading in 2 Seconds...

play fullscreen
1 / 97

REXX - PowerPoint PPT Presentation


  • 169 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' REXX' - felicia-baxter


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
slide1

REXX

Saravanan Desingh

slide2
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

slide4

REXX ENVIRONMENT

1.1 Creating a REXX program.

1.2 Coding Simple variables and Expressions

1.3 Using Built-in functions

slide5

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

slide11

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)

slide17

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
slide25

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

slide26

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
slide27
Initialize array:
    • array.=0
    • arr.=‘’
slide28
Single and Multi dimension array.
    • Ex:

single.var

matrix.row.col

slide29
Compound Variables can be used as Data Structures.
  • Ex:

emprec.empname=‘Bharath’

emprec.empno=5508

emprec.sex=‘M’

  • Record like structure.
slide30

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:

….

slide46

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

slide60

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”

slide67

3 DEBUGGING & STORAGE FACILITIES

3.1 Processing Data on a Stack

3.2 Manipulating Data sets

3.3 Debugging with REXX Facilities

slide68

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()

slide74

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

slide75
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 ”
slide82

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:

000003 CALL subrtn

000004 EXIT

000005

000006 subrtn:

000007 say “This is call from line” SIGL

000008 RETURN

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

slide90

4 REXX AS A COMMAND LANGUAGE

4.1 Interacting with the Command Host Environment

4.2 Interacting with TSO/E

slide91

4.1 Interacting with the Command Host Environment

  • Directing Commands to the Command Host Environment
slide92
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”

slide93
Verify Environment:

Format:

“SUBCOM environment”

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

slide94

4.2 Interacting with TSO/E

4.2.1 TSO Commands

4.2.2 Using OUTTRAP to Pass Data

slide95

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)