Download presentation
Presentation is loading. Please wait.
Published byNoel Daniel Modified over 9 years ago
1
REXX Saravanan Desingh
2
REXX An abbreviation of IBMs Restructured EXtended eXecutor (REXX) Language, which allows system command to be used or combined in a routine.
3
Topics 1 REXX ENVIRONMENT 2 CODING PROGRAM & DATA INSTRUCTIONS 3 DEBUGGING & STORAGE FACILITIES 4 REXX AS A COMMAND LANGUAGE
4
1.1 Creating a REXX program. 1.2 Coding Simple variables and Expressions 1.3 Using Built-in functions 1.REXX ENVIRONMENT
5
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 Creating a REXX program
6
1.1.1 Beginning a REXX program and using comments Start with Keyword REXX Comments /* and */
7
1.1.2 Structuring a REXX program Free-Formatted Language A Space to separate the arguments Not Case-Sensitive
8
1.1.2 Structuring a REXX program ;Separate 2 Instructions,Continue an Instruction
9
1.1.3 Basic terminal input and output instruction SAY –Display Text on Screen PULL –Retrieves User Input
10
1.1.4 How to Run a REXX program? Explicit Command –TSO Environment exec ‘DSN’ exec Implicit Command –SYSPROC or SYSEXEC TSO member-name
11
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 Coding Simple variables and Expressions
12
1.2.1 Using Dynamic Typing Implicit Defining of Variables Defined Dynamically
13
1.2.2 Assigning simple variables Variable Characteristics: –Length 1 to 255 characters –A-Z, a-z, 0-9 –!,@,#,$,?,_ –Should not begin with Digits
14
1.2.3 Using Character String Expressions and Operations All Constants & Variables referred as Alphanumeric Character Strings. Character Strings - “” and ‘’ Concatenation - ||
15
1.2.4 Using Arithmetic Expressions and Operations Denoted with or without Quotes 12,’12.0’,”12.00” Arithmetic Operators +,-,*,/
16
1.2.5 Using Logical Expressions and Operations = > < == (Identical to) & | \ (Not)
17
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 Using Built-in functions
18
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)
19
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
20
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
21
1.3.2 Formatting Numbers TRUNC(number,numberofplaces) Ex: TRUNC(56.7777,1)=56.7
22
1.3.3 Using Arithmetic Functions DATATYPE(variable) –NUM –CHAR
23
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
24
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
25
2.1 Using Compound variables 2.2 Coding Conditional and Looping Constructs 2.3 Implementing Subroutines, Procedures, and Functions 2.4 Parsing Data 2 CODING PROGRAM & DATA INSTRUCTIONS
26
Implementing Arrays and Records 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”
27
Initialize array: –array.=0 –arr.=‘’
28
Single and Multi dimension array. –Ex: single.var matrix.row.col
29
Compound Variables can be used as Data Structures. Ex: emprec.empname=‘Bharath’ emprec.empno=5508 emprec.sex=‘M’ Record like structure.
30
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 Coding Conditional and Looping Constructs
31
2.2.1 Using Conditional constructs and Compound statements Conditional group: IF-THEN-ELSE Format: IF expression THEN statement ELSE statement ELSE optional
32
2.2.1 Using Conditional constructs and Compound statements Grouping the statements: DO-END Ex: DO Statement1 Statement2 END
33
2.2.1 Using Conditional constructs and Compound statements Selecting several conditions: SELECT-WHEN-THEN-OTHERWISE * OTHERWISE optional
34
2.2.2 Using Looping Constructs Repeating a sequence of instructions. Conditional Looping. DO-WHILE DO-UNTIL
35
2.2.2 Using Looping Constructs Format: DO WHILE condition Stmts END Executes when condition is True.
36
2.2.2 Using Looping Constructs Format: DO UNTIL condition stmts END Executes when condition is False.
37
2.2.2 Using Looping Constructs Numerically Controlled Repetitive Loop: –Format: DO nooftimes stmts END –Ex: DO 5 say ‘It will be displayed for 5 times’ END
38
2.2.2 Using Looping Constructs Numerically Controlled Repetitive Loop:(Infinite Looping) –Format: DO FOREVER stmts END –Ex: DO FOREVER say ‘Your System is locked by the User’ END
39
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
40
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
41
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
42
2.2.2 Using Looping Constructs Nested Looping: DO … ……. END
43
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
44
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
45
2.2.4 Branching on Errors SIGNAL: Ex: IF RC\=0 THEN SIGNAL handle-error ……. handle-error: ….
46
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 Implementing Subroutines, Procedures, and Functions
47
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.
48
2.3.1 Defining Subroutines, Procedures, and Functions In REXX, use a Procedures the 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.
49
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.
50
2.3.2 Using Subroutines Main pgm, ….. CALL subrtn …… EXIT subrtn: …….. RETURN
51
2.3.3 Using Procedures Main pgm, ….. CALL subrtn …... EXIT subrtn: PROCEDURE …….. RETURN
52
2.3.3 Using Procedures Ex: i=4 call num say i num: PROCEDURE i=3 RETURN Output is 4.
53
2.3.3 Using Procedures EXPOSE: –To expose caller Variables. Format: –ProcName: PROCEDURE EXPOSE arg1 arg2… Argument variables can be constants, expressions or variables
54
2.3.3 Using Procedures Ex: n1=5 n2=4 avg=0 call calc say avg calc: PROCEDURE EXPOSE n1 n2 avg avg=(n1+n2)/2 RETURN
55
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.
56
2.3.3 Using Procedures Ex: CALL exproc name1 ecode1 exproc: PROCEDURE ARG name2 ecode2 say name2 say ecode2 RETURN
57
2.3.3 Using Procedures RESULT: –Last value returned from the Procedure or Subroutine Ex: RETURN 10 - 10 is assigned to RESULT.
58
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()
59
2.3.4 Using Functions Ex: n1=1 n2=2 say average(n1 n2) average:PROCEDURE ARG n1 n2 RETURN (n1+n2)/2
60
2.4.1 Parsing from Terminal Input and Passed Values 2.4.2 Using Additional Parsing Instructions 2.4 Parsing Data
61
2.4.1 Parsing from terminal input Format: PULL var or PARSE UPPER PULL var
62
2.4.1 Parsing from terminal input PULL var1 var2… PARSE UPPER PULL var1 var2.. PARSE PULL var1 var2..
63
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 …
64
2.4.2 Using additional Parsing Instructions PARSE VAR varname var1 var2 … PARSE VALUE expression WITH var1 var2..
65
2.4.2 Using additional Parsing Instructions Ex: PARSE VALUE “hello” || “world”, WITH var1 var2 Var1=”hello” Var2=”world”
66
To Trap and disregard dummy words PARSE VALUE “This is a REXX program” WITH var1.. var2. Var1=”This” Var2=”REXX” PARSE VALUE “Hi, Everybody” WITH var1 ‘,’ var2 Var1=”Hi ” Var2=” Everybody”
67
3.1 Processing Data on a Stack 3.2 Manipulating Data sets 3.3 Debugging with REXX Facilities 3 DEBUGGING & STORAGE FACILITIES
68
3.1.1 Defining the stack 3.1.2 Implementing LIFO and FIFO lists with the stack 3.1 Processing Data on a Stack
69
3.1.1 Defining the stack Storage Facility in Memory for lists of Data. Access is Sequential.
70
3.1.2 Implementing LIFO and FIFO lists with the stack LIFO- Last In First Out FIFO- First In First Out Default is LIFO
71
3.1.2 Implementing LIFO and FIFO lists with the stack PUSH: To implement a LIFO list on the stack, PUSH expression
72
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
73
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()
74
3.2.1 Reading information from Data sets 3.2.2 Writing information to Datasets 3.2.3 Updating Data sets 3.2 Manipulating Data sets
75
ALLOC – allocation EXECIO – input/output operations
76
3.2.1 Reading information from data sets Allocate dataset to a file. –“ALLOC F(file) DA(‘DSN’) SHR REUSE” file -> Logical File DSN-> Physical File
77
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
78
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”
79
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.
80
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.
81
3.2.3 Updating a data sets DISKRU: –Disk read for updating. Ex: –“EXECIO 1 DISKRU file(LIFO ”
82
3.3.1 Tracing Program Flow 3.3.2 Using Special Variables 3.3 Debugging with REXX Facilities
83
3.3.1 Tracing Program Flow TRACE: Initiate trace from REXX TRACE C – Commands TRACE R - Results TRACE E - Errors TRACE N - Normal
84
3.3.1 Tracing Program Flow Interactive Tracing: TRACE ?option option- C,R or E.
85
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.
86
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
87
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
88
3.3.2 Using Special Variables SIGNAL ON ERROR: –Any subsequent nonzero RC cause control to pass to a subroutine named ERROR.
89
3.3.2 Using Special Variables SIGNAL ON ERROR: Ex: SIGNAL ON ERROR ….. ERROR: Say ‘Error no.’ RC ‘occurred at line’ SIGL EXIT
90
4.1 Interacting with the Command Host Environment 4.2 Interacting with TSO/E 4 REXX AS A COMMAND LANGUAGE
91
Directing Commands to the Command Host Environment 4.1 Interacting with the Command Host Environment
92
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: “address MVS”
93
Verify Environment: Format: “SUBCOM environment” Sets RC to zero if the environment is present, else set to one.
94
4.2.1 TSO Commands 4.2.2 Using OUTTRAP to Pass Data 4.2 Interacting with TSO/E
95
Commonly used TSO Commands –ALLOCATE –DELETE –DSAT –EXEC –LISTDS 4.2.1 TSO Commands
96
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)
97
THE END
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.