ISBN-13: 9781852332617 / Angielski / Miękka / 2000 / 342 str.
ISBN-13: 9781852332617 / Angielski / Miękka / 2000 / 342 str.
REXX is a general purpose language which is easy to learn. It contains an extensive library of powerful functions which greatly reduces the amount of coding necessary to write applications. The use of REXX in a wide range of environments simplifies the writing of applications to run under different hardware and operating systems, and its expansibility allows other components to make sure of REXX facilities and vice versa.
Practical Usage of TSO REXX provides a concise source of information for the development and implication of applications using the REXX language. The author adopts a practical approach, using lists and diagrams to illustrate relevant points.
This third edition, (previously titled Practical Usage of MVS REXX), has been revised to include the new REXX features introduced for the OS/390 TSO/E environment.
1. Introduction.- 1.1 REXX background.- 1.2 REXX characteristics.- 1.3 REXX applications.- 1.4 REXX’s future.- 2. REXX Facilities.- 2.1 Introduction.- 2.2 REXX structure.- 2.2.1 Token.- 2.2.2 Literal string.- 2.2.3 Hexadecimal literal string.- 2.2.4 Binary literal string.- 2.2.5 Symbol.- 2.2.6 Numeric symbol.- 2.2.7 Variables.- 2.2.8 Operator.- 2.2.9 Prefix operators.- 2.2.10 Arithmetic operators.- 2.2.11 Abuttal operator.- 2.2.12 Comparative operators.- 2.2.13 Logical operators.- 2.2.14 Implicit concatenation operators.- 2.2.15 Other syntax elements.- 2.3 REXX expressions.- 2.3.1 Arithmetic expression.- 2.3.2 Comparative expression.- 2.3.3 Logical (Boolean) expression.- 2.4 Statements.- 2.5 Invocation of a REXX exec.- 2.6 Comparison with CLISTs.- 3. REXX Processing Elements.- 3.1 Introduction.- 3.2 Statements.- 3.3 Routines.- 3.3.1 Subroutine.- 3.3.2 Procedure.- 3.3.3 Function.- 3.3.4 Search order.- 3.3.5 Invocation.- 3.3.6 Parameters (arguments).- 3.3.7 Return.- 3.3.8 Communication between execs.- 3.4 Types of instruction.- 3.4.1 Conditional control.- 3.4.2 Loop control.- 3.5 Control processing flow.- 3.6 Assignment.- 3.7 Stack (queue) processing.- 3.7.1 Stack as terminal input buffer.- 3.7.2 Stack used for general data storage.- 3.7.3 Stack used for passing data between execs.- 3.7.4 File buffer.- 3.8 Parsing.- 3.9 Debugging.- 3.10 Miscellaneous instructions.- 3.11 Commands.- 3.12 Special variables.- 3.12.1 RC — Return code.- 3.12.2 RESULT — Function result.- 3.12.3 SIGL — Source line number.- 4. REXX Instructions.- 4.1 Introduction.- 4.2 Instruction descriptions.- 4.2.1 ADDRESS — Set environment.- 4.2.2 ARG — Fetch argument.- 4.2.3 CALL — Invoke routine.- 4.2.4 DO — Define start of DO-block.- 4.2.5 DROP — Free variable.- 4.2.6 EXIT — Terminate exec.- 4.2.7 IF — Conditional execution.- 4.2.8 INTERPRET — Interpret statement.- 4.2.9 ITERATE — Terminate the current cycle in the DO-loop.- 4.2.10 LEAVE — Terminate DO-loop.- 4.2.11 NOP — No-operation.- 4.2.12 NUMERIC — Define numeric formats.- 4.2.13 OPTIONS — Pass special parameters to the language processor.- 4.2.14 PARSE — Assign data.- 4.2.15 PROCEDURE — Define internal procedure.- 4.2.16 PULL — Fetch data element from the head of the stack.- 4.2.17 PUSH — Set data element at the head of the stack.- 4.2.18 QUEUE — Set data element at the tail of the stack.- 4.2.19 RETURN — Return from routine.- 4.2.20 SAY — Display.- 4.2.21 SELECT — Select one condition from a series of conditions.- 4.2.22 SIGNAL — Enable (or disable) an exception condition, or cause control to be passed to a routine (or label).- 4.2.23 TRACE — Set debugging options.- 4.2.24 UPPER — Transform lowercase characters into uppercase.- 4.2.25 = — Assign.- 4.2.26 Command.- 4.3 Examples.- 5. Exception Handling.- 5.1 Introduction.- 5.2 Condition traps.- 5.2.1 ERROR condition.- 5.2.2 FAILURE condition.- 5.2.3 HALT condition.- 5.2.4 NOVALUE condition.- 5.2.5 SYNTAX condition.- 5.2.6 Stacked conditions.- 5.3 Explicit invocation.- 6. String Processing.- 6.1 Introduction.- 6.2 Word parsing.- 6.3 Delimiter parsing.- 6.4 Positional parsing.- 6.5 Dynamic parsing.- 6.6 Argument parsing.- 6.7 Worked examples.- 7. Numbers and Arithmetic.- 7.1 Introduction.- 7.2 Number.- 7.3 Arithmetic operators.- 7.3.1 Power (exponentiation).- 7.3.2 Multiplication.- 7.3.3 Division.- 7.3.4 Modulo (integer) division.- 7.3.5 Remainder division.- 7.3.6 Numeric comparison.- 7.4 Precision and representation.- 7.4.1 Computational base.- 7.4.2 Retention of significance.- 7.4.3 Arithmetic exceptions.- 7.5 Sequence of operations.- 7.6 Numeric formatting.- 8. Input/Output.- 8.1 Introduction.- 8.2 Data buffering.- 8.3 Opening and closing the data files.- 8.4 Terminal operations.- 8.5 File-mode operations.- 8.5.1 File positioning.- 8.5.2 Write operation.- 8.5.3 Delete data operation.- 8.5.4 Read operation.- 8.5.5 Update operation.- 9. Debugging.- 9.1 Introduction.- 9.2 Exception conditions.- 9.3 Tracing options.- 9.3.1 ALL — Display all expressions before execution.- 9.3.2 COMMANDS — Display all commands before execution.- 9.3.3 ERROR — Display all commands which return an error condition.- 9.3.4 FAILURE — Display all commands which return a negative error condition.- 9.3.5 INTERMEDIATE — Display all expressions (with intermediate results) before being executed.- 9.3.6 LABELS — Display all labels as they are reached.- 9.3.7 RESULTS — Display all expressions (with end results) before being executed.- 9.3.8 SYNTAX — Check syntax without processing the statements.- 9.3.9 n — Suppress trace intervention.- 9.4 Trace output.- 9.4.1 Trace data prefixes.- 9.4.2 Trace intermediate data prefixes.- 9.4.3 Trace output example.- 9.5 Interactive debug.- 9.5.1 Interactive debugging example.- 9.6 Parametric debug.- 9.7 Errors with host commands and functions.- 10. REXX Built-in Functions.- 10.1 Introduction.- 10.1.1 Function-like (direct) invocation.- 10.1.2 Call invocation.- 10.1.3 Internal functions.- 10.1.4 Function side-effects.- 10.1.5 Invocation errors.- 10.1.6 Internal data format.- 10.2 Function definitions.- 10.2.1 ABBREV — Test whether string is an abbreviation.- 10.2.2 ABS — Return absolute value.- 10.2.3 ADDRESS — Return name of current environment.- 10.2.4 ARG — Return argument.- 10.2.5 BITAND — Logical And.- 10.2.6 BITOR — Logical Or.- 10.2.7 BITXOR — Logical Exclusive-Or.- 10.2.8 B2X — Convert binary data to hexadecimal.- 10.2.9 CENTRE (CENTER) — Centralise data.- 10.2.10 COMPARE — Compare.- 10.2.11 CONDITION — Return condition.- 10.2.12 COPIES — Replicate data.- 10.2.13 C2D — Convert character data to decimal.- 10.2.14 C2X — Convert character data to hexadecimal.- 10.2.15 DATATYPE — Determine data type.- 10.2.16 DATE — Return current date.- 10.2.17 DELSTR — Delete substring.- 10.2.18 DELWORD — Delete words.- 10.2.19 DIGITS -Return the NUMERIC DIGITS setting.- 10.2.20 D2C — Convert decimal to character.- 10.2.21 D2X — Convert decimal to hexadecimal.- 10.2.22 ERRORTEXT — Return message text.- 10.2.23 FIND — Search for word.- 10.2.24 FORM — Determine NUMERIC FORM setting.- 10.2.25 FORMAT — Format numeric value.- 10.2.26 FUZZ — Determine NUMERIC FUZZ setting.- 10.2.27 INDEX — Search for substring.- 10.2.28 INSERT — Insert substring.- 10.2.29 JUSTIFY — Justify string of words.- 10.2.30 LASTPOS — Determine last position of phrase.- 10.2.31 LEFT — Left-align string.- 10.2.32 LENGTH — Determine length of string.- 10.2.33 LINESIZE — Return the (maximum) width of a terminal line.- 10.2.34 MAX — Determine the maximum of a series of numeric values.- 10.2.35 MIN — Determine the minimum of a series of numeric values.- 10.2.36 OVERLAY — Overlay part of a string with a phrase.- 10.2.37 POS — Search for substring.- 10.2.38 QUEUED — Determine the number of entries in the queue.- 10.2.39 RANDOM — Generate a (pseudo-)random number.- 10.2.40 REVERSE — Reverse the sequence of data.- 10.2.41 RIGHT — Right-align string.- 10.2.42 SIGN — Determine numeric sign.- 10.2.43 SOURCELINE — Return “program line”.- 10.2.44 SPACE — Insert fill-character between words.- 10.2.45 STRIP — Remove padding-characters at the start or end of a string.- 10.2.46 SUBSTR — Extract substring.- 10.2.47 SUBWORD — Extract series of words from word-string.- 10.2.48 SYMBOL — Determine the status of a symbol.- 10.2.49 TIME — Return the current time-of-day.- 10.2.50 TRACE — Return (and set) current trace mode.- 10.2.51 TRANSLATE — Translate characters.- 10.2.52 TRUNC — Truncate numeric value.- 10.2.53 USERID — Return Userid.- 10.2.54 VALUE — Return (and set) the contents of a symbol.- 10.2.55 VERIFY — Test whether only characters in a phrase are present in string.- 10.2.56 WORD — Fetch word.- 10.2.57 WORD INDEX — Determine the character position of a word in a string of words.- 10.2.58 WORDLENGTH — Determine word length.- 10.2.59 WORDPOS — Determine the word-number of word in a word-string.- 10.2.60 WORDS — Determine the number of words in a word-string.- 10.2.61 XRANGE — Define a range of hexadecimal values.- 10.2.62 X2B — Convert hexadecimal to binary.- 10.2.63 X2C — Convert hexadecimal to character.- 10.2.64 X2D — Convert hexadecimal to decimal.- 10.3 Examples.- 11. Host REXX Commands.- 11.1 Introduction.- 11.2 Host REXX command definitions.- 11.2.1 DELSTACK — Delete stack.- 11.2.2 DROPBUF — Release buffer.- 11.2.3 EXECIO — Perform input/output operation.- 11.2.4 EXECUTIL — Specify execution environment for REXX exec.- 11.2.5 HE — Halt execution.- 11.2.6 HI — Halt interpretation.- 11.2.7 HT -Halt typing.- 11.2.8 MAKEBUF — Create new buffer in the stack.- 11.2.9 NEWSTACK — Create a new stack.- 11.2.10 QBUF — Query buffer.- 11.2.11 QELEM — Query elements.- 11.2.12 QSTACK — Query stack.- 11.2.13 RT — Resume typing.- 11.2.14 SUBCOM — Confirm the host environment.- 11.2.15 TE — Trace end.- 11.2.16 TS — Trace start.- 11.3 Example.- 12. MVS Command Functions.- 12.1 Introduction.- 12.2 MVS command function calls.- 12.2.1 GETMSG — Retrieve a console session message.- 12.2.2 LISTDSI — List (obtain) dataset information.- 12.2.3 MSG — Set (interrogate) CLIST CONTROL MSG option.- 12.2.4 MVSVAR — Obtain information on MVS, TSO, and the current session.- 12.2.5 OUTTRAP — Trap TSO display output.- 12.2.6 PROMPT — Set (interrogate) CLIST CONTROL PROMPT option.- 12.2.7 SETLANG — Set (interrogate) current language.- 12.2.8 STORAGE — Set (interrogate) main-storage contents.- 12.2.9 SYSCPUS — Obtain CPU information.- 12.2.10 SYSDSN — Request dataset status.- 12.2.11 SYSVAR — Fetch TSO system variable.- 12.3 Invocation of other TSO commands.- 12.4 Example.- 13. REXX Invocation.- 13.1 Introduction.- 13.2 Invocation from TSO/ISPF.- 13.3 Invocation from batch TSO.- 13.4 Invocation from batch.- 13.5 Linkage to the host environment.- 13.6 Linkage to programs.- 13.6.1 LINK (ATTACH).- 13.6.2 LINKMVS (ATTACHMVS).- 13.6.3 LINKPGM (ATTACHPGM).- 13.7 Interface with ISPEXEC (ISPF Dialog Manager).- 13.8 Interface with ISREDIT (ISPF/PDF Edit macro).- 13.8.1 Macro example.- 13.9 Interface with DB2 (Database2).- 13.9.1 DB2 invocation example.- 13.10 Interface with QMF (Query Management Facility).- 13.10.1 DSQCIX — QMF Callable Interface.- 13.10.2 DSQCCI — QMF Command Interface.- 13.11 Interface from programs with REXX.- 14. System Interfaces.- 14.1 Introduction.- 14.2 General conditions.- 14.2.1 C, C++ restrictions.- 14.2.2 Other program language restrictions.- 14.3 Invocation of a REXX exec.- 14.3.1 Interface from programs to batch REXX (IRXJCL).- 14.3.2 Invocation of a REXX exec using the TSO Service Facility (IJKEFTSR).- 14.4 Interface from programs to REXX processor (IRXEXEC).- 14.4.1 Sample program.- 14.4.2 Invocation of an in-store exec.- 14.5 Program access to REXX variables (IRXEXCOM service).- 14.5.1 Sample programs.- 14.5.2 Sample retrieval program.- 14.6 Stack processing (IRXSTK service).- 14.6.1 Sample programs.- 14.7 Command interface.- 14.7.1 Entry conditions.- 14.7.2 Parameter list.- 14.7.3 Exit conditions.- 14.7.4 Examples.- 14.7.5 Command registration interface (IRXSUBCM).- 14.7.6 Command router.- 14.8 Function interface.- 14.8.1 Entry conditions.- 14.8.2 Exit conditions.- 14.8.3 Sample function program.- 14.9 Function package.- 14.9.1 Function directory.- 14.10 Load routine (IRXLOAD service).- 14.11 Initialisation routine (IRXINIT service).- 14.11.1 Sample initialisation program.- 14.12 Get result (IRXRLT service).- 14.12.1 Sample IRXRLT program.- 14.13 Control blocks.- 14.13.1 Argument List.- 14.13.2 EFPL (External Function Parameter List).- 14.13.3 ENVBLOCK (Environment Block).- 14.13.4 EVALBLOCK (Evaluation Block).- 14.13.5 EXECBLK (Exec Block).- 14.13.6 INSTBLK (In-storage Control Block).- 14.13.7 SHVBLOCK (Shared Variable (Request) Block).- 14.13.8 VEEP (Vector of External Entry Points).- 14.14 Examples.- 14.14.1 Assembler implementation.- 14.14.2 C implementation.- 14.14.3 COBOL implementation.- 14.14.4 PL/I implementation.- 15. Worked Examples.- 15.1 Introduction.- 15.2 Worked example.- 15.3 Worked example.- 15.4 Worked example.- 15.5 Worked example.- 15.6 Worked example.- 16. REXX Compiler.- 16.1 Introduction.- 16.2 JCL procedures.- 16.2.1 REXXC procedure.- 16.2.2 REXXCL procedure.- 16.2.3 REXXCLG procedure.- 16.2.4 REXXL procedure.- 16.3 Compiler options.- 16.4 Combining compiled objects.- 16.4.1 Produce a statically loaded program.- 16.5 Stubs.- 16.5.1 CALLCMD stub.- 16.5.2 CPPL stub.- 16.5.3 EFPL stub.- 16.5.4 CPPLEFPL stub.- 16.5.5 MVS stub.- 16.6 Performance.- 16.7 Compatibilty.- 16.7.1 Execution sequence.- 17. Other Environments.- 17.1 Introduction.- 17.2 REXX for CICS.- 17.3 REXX for UNIX Services.- 18. Program Development.- 18.1 Introduction.- 18.2 Reusability.- 18.2.1 Productivity.- 18.2.2 Standardisation.- 18.3 Readability.- 18.4 Reliability.- 18.5 Maintainability.- 18.6 Compatibility.- 18.7 Performance.- 18.8 Expansibility.- 18.9 Stepwise refinement.- 18.10 Portability.- 18.11 Testing.- 18.12 Run-time debugging.- 18.13 Development with the REXX compiler.- Appendix A. Syntax Notation.- Appendix B. Glossary.
1997-2024 DolnySlask.com Agencja Internetowa