rexx语言概览(修改稿)课件_第1页
rexx语言概览(修改稿)课件_第2页
rexx语言概览(修改稿)课件_第3页
rexx语言概览(修改稿)课件_第4页
rexx语言概览(修改稿)课件_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

REXX语言概览——REXX学习小组2023/7/211精选PPT主要内容REXX语言简介REXX基本语法REXX命令函数与子例程数据处理REXX与子系统的交互2023/7/212精选PPT主要内容REXX语言简介REXX基本语法REXX命令函数与子例程数据处理REXX与子系统的交互2023/7/213精选PPTREXX语言简介*什么是脚本语言?*REXX:REstructuredeXtendedeXecutor1979-1982IBMMikeCowlishaw为简化编程而设计*主要应用于大型主机平台*其他平台:Windows,Linux,Unix,AIX,DOS*主要应用:执行日常例行任务,例如输入TSO/E命令调用其他REXX程序编写ISPF应用对问题的一次性快速解决系统编程2023/7/214精选PPT*特点:用途多样可读易用书写自由单一数据类型强大的内置函数跟踪调试方便解释型语言*缺点:难以维护,执行效率不高2023/7/215精选PPT*组成指令:关键字,赋值,标签,空子句,命令调用内置函数:由编译器直接支持TSO/E外部函数:由TSO/E环境支持数据栈函数eg:/*REXX*/SAY"WHAT'SYOURNAME?"PULLNAMESAY'HELLOWORLD!THISIS'NAME2023/7/216精选PPT执行方法:1.2.3.已放在系统库中,可以直接在命令栏里指定执行4.批处理方式,使用JCL提交作业执行PGM=IKJEFT012023/7/217精选PPT调试方式:Trace指令调试TraceC:所有的命令调用均被追踪TraceE:只追踪返回码非零的错误RC和SIGLRC:返回码无错时为0,有错误时置为该错误的返回码SIGL:控制流发生转变时的代码行号SIGNALONERROR定位错误发生位置交互式调试:TRACE?R2023/7/218精选PPT主要内容REXX语言简介REXX基本语法REXX命令函数与子例程数据处理REXX与子系统的交互2023/7/219精选PPTREXX语法指令概览*语法规则:指令可为大写,小写,大小写混合,编译执行过程中自动转化成大写(引号中的除外)SAYhelloSAY"hello"*指令格式:指令格式自由,系统自动忽略多余的空格和空行续行:加入空格,不加入空格SAY'THISISANEXTENDED','INSTRUCTION.'SAY'THISISASTRINGCONT'||,'ENT.'指令结束可用;作为结尾,一行只有一条命令,可以不加结尾SAY'hello';SAYhello;SAY"GOON"2023/7/2110精选PPT指令类型*关键字:SAY,IF,THEN,ELSE,EXIT,END,DO*赋值:Variable=9;Variable=Variable+3*标签:后面紧跟冒号的名称符,出现在指令开始处*空子句:注释或者空行,作用是增加可读性*命令调用2023/7/2111精选PPT变量和表达式*变量命名:大小写字母,@,#,$,?,.,!,_等双字符X'41'(程序中指定ETMODE)双字符变量要用<>括起来eg:OPTIONS'ETMODE'<.S.Y.M.D>=10约束:第一个字符不能是数字,也不能是点,长度不超过250字节,不能取保留字*变量的取值:整型,浮点型,有符号数,字符串,其他变量值或表达式变量没有初始化,则默认值为变量名的大写字母表示变量赋值可通过PARSE指令,VALUE内置函数,赋值表达式及其他编程语言2023/7/2112精选PPT变量类型:*简单变量:不带.变量,没有对其赋值,默认值为对应的大写表示。大小写不敏感*复合变量:带.的变量,由词干和词尾组成,遵循简单变量命名规则,不超过255个字符,对应其他语言中的数组,但下标不一定为数字eg:TIME=3REXX.TIME值为REXX.3*复合词干:复合变量的第一个词干和.组成,用于将复合变量所表示的整个变量集赋初值eg:room.=emptyroom.mine=fullSAYroom.1room.mine/*emptyfull*/2023/7/2113精选PPT表达式的使用:*常量表达式:数字常量,字符串常量(通常写在引号中,避免混淆)*算数表达式:+-*/%(取商)//(取余)**(乘方),+/-正负优先级:()圆括号

+,-前缀符号

**指数运算符号

*,/,%,//乘法和除法

+,-加法和减法*比较表达式:数值比较,字符串比较eg:'HELLO'=hello普通比较,返回1'HELLO'==hello严格比较,返回0比较符:=,(﹁=,\=,<>,><),(>=,﹁<,\<)(<=,﹁>,\>),(﹁==,\==),<,>2023/7/2114精选PPT*逻辑表达式:&|\&&(异或)*连接表达式空格:连接两项,并在中间加入空格,默认设置为加入一个空格SAYXYZ/*XYZ*/“||”直接连接两端,中间不加空格8||(3*3)/*89*/直接相邻eg:percent=60percent‘%’/*60%*/2023/7/2115精选PPT关键字指令*SAY向终端输出字符*PULL从键盘读取*(PARSE)ARG读取用户提供的参数(用户提供的参数为(‘hello’,2))ARGstring,num/*string='hello',num=2*/(用户提供的参数为“helloworld”)ARGstr1,str2/*str1=hello,str2=world*/*NOP空子句,表示不执行操作*UPPER将变量值转化成大写eg:A='hello'

UPPERASAYA/*HELLO*/*ADDRESS,PROCEDURE,CALL,DROP,NUMERIC,OPTIONS,SIGNAL......

2023/7/2116精选PPT条件控制语句*IF-THEN-ELSEIFexprTHENinstructionsELSEinstructionseg:

IFweather=fineTHENDOSAY'lovelyday!'

IFgym=freeTHENSAY'let'splaybasketball!'

ELSE

NOPEND

ELSESAY'badweather!'2023/7/2117精选PPT*SELECT/WHEN/OTHER/ENDSELECTWEHNexpr1THENinstructionWEHNexpr2THENinstruction......OTHERWISEinstructionsEND2023/7/2118精选PPTeg:SELECTWHENweather=fineTHENSAY'lovelyday'WHENgym=freeTHENSAY'let'splaybasketball'OTHERWISESAY'badweather'END2023/7/2119精选PPT循环控制语句循环指令分为两类:重复循环和条件循环循环语句写在DO-END结构内,循环可以嵌套,DO和END要匹配基本用法:DorepetitorClauseInstructionsEnd2023/7/2120精选PPT*重复循环语句默认情况每次变量加1,可以通过BY来更改每次的增量,FOR来控制最大循环次数eg:

Doi=1to10BY2FOR2SAY'HELLO'

END/*结果输出两行HELLO*/2023/7/2121精选PPT*条件循环语句DOWHILE:第一次进入循环体前先检测条件,当条件为真时继续循环DOUNTIL:在语句执行后进行条件检测,条件为假时继续循环eg:QUANTITY=20DONUMBER=1TO10

WHILEQUANTITY<50/*UNTILQUANTITY>=50*/QUANTITY=QUANTITY+NUMBERSAY'QUANTITY='QUANTITYEND2023/7/2122精选PPT*DOFOREVER无限循环死循环处理按中断键,用户收到IRX0920I的消息,回复HI若没有停止,再次按中断键,回复HE*LEAVE和ITERATE指令LEAVE:立刻终止循环ITERATE:终止当次循环eg:DOi=1TO5IFi=3THEN

ITERATEELSESAYiEND/*输出12452023/7/2123精选PPTeg:DOouter=1TO2DOinner=1TO2IFinner>1THEN

LEAVEinnerELSESAY'INNER'ENDSAY'OUTER'END/*INNEROUTERINNEROUTER*/2023/7/2124精选PPT中断语句*EXIT:无条件终止并且返回到程序调用处*CALL:通过调用内部或者外部子例程来中断现有程序*RETURN:调用程序结束后返回原调用处,继续执行原程序*SIGNAL:跳转到目标标签处,通常用于程序的测试或特殊情况的处理,无法返回2023/7/2125精选PPT主要内容REXX语言简介REXX基本语法REXX命令函数与子例程数据处理REXX与子系统的交互2023/7/2126精选PPTREXX命令TSO/EREXX命令TSO环境下提供给REXX使用的系统命令此种命令只能用于REXX程序,在CLIST和TSOREADY模式下不能使用

可提供的服务:I/O控制操作数据栈检查宿主命令环境改变程序执行2023/7/2127精选PPT常用命令*数据栈相关命令(TSO/E和非TSO/E下均可使用):*NEWSTACK创建一个数据栈DELSTACK删除最新建的数据栈及里面的全部数据

"NEWSTACK"/*创建新的数据栈*/PUSHelem1PUSHelem2......

"DELSTACK"/*删除之前创建的数据栈*/2023/7/2128精选PPT*MAKEBUF在数据栈上创建一个新的缓冲区,并返回编号,保存在RC中DROPBUF删除最新创建的缓冲区并清空数据*QSTACK返回程序中存在的数据栈数量(包括buffer0),如果未使用MAKESTACK命令,返回值为1*QBUF就算新创建的数据栈上建立的缓冲区数量,为使用过MAKEBUF命令,QBUF命令返回0*QELEM计算新创建的数据栈缓冲区中的元素数量,未使用过MAKEBUF返回值为0,与当前数据栈中元素的数量无关2023/7/2129精选PPT*EXECIO命令用于处理数据集的输入输出,对数据集进行增,删,改,查等操作可以执行I/O操作的数据集是PS,PDS/PDSE的成员该命令不具备分配数据集的功能*EXECUTIL命令--设置系统运行库在程序载入后是否关闭--控制TRACE指令的开启和关闭--终止程序的翻译过程--禁止和回府程序对终端的输出--修改程序包目录中的项目--设置出了SYSPROC之外的其他运行库2023/7/2130精选PPT*立即命令--TS(TraceStart)启动TraceTE(TraceEnd)结束Trace--HI停止对所有REXX和CLIST程序的翻译,包括调用该命令本身的程序--HT常规的输出被挂起,如SAY输出指令,但REXX运行正常,错误信息仍然可以显示RT恢复之前挂起的输出--HE终止REXX程序的执行*SUBCOM通过设置RC的值检测某个宿主环境是否可用

"SUBCOMISPEXEC"IFRC=0THEN

ADDRESSISPEXECELSENOP2023/7/2131精选PPTeg:/*REXX*/MAINRTN:......CALLSUBRTN

"EXECUTILTE"......EXITSUBRTN:

"EXECUTILTS"......RETURN2023/7/2132精选PPT主要内容REXX语言简介REXX基本语法REXX命令函数与子例程数据处理REXX与子系统的交互2023/7/2133精选PPT函数与子例程什么是函数接受数据,处理数据并返回值,已完成特定功能的代码片段REXX中的函数种类内置函数:丰富的内置函数几大地方便用户编程用户函数:内部函数,外部函数函数包:将函数以打包的形式发布函数调用ReturnValue=functionName([expr[,expr[,......]])函数名与左括号中间不能有空格2023/7/2134精选PPT子例程与函数的区别*函数必须有返回值,子例程不必要*函数的返回值要替代调用的位置,而子例程的返回值保存在特殊变量result中*调用方式不同子例程的调用

eg:CALLSUBSTR'verylongword',1,8x=RESULT为什么要用函数和子例程结构化程序所必须的将程序分为多个模块代码的重复利用函数和子程序可以是内部或外部的

2023/7/2135精选PPT/****************REXX*******************/

CALLsubroutine'ab','cd','ef'SAYresult/*输出结果abcdef*/SAYsubfunc('ab','cd','ef')/*输出结果efcdab*/RETURN0/**************subroutine子例程实现***************/subroutine:PROCEDUREPARSEARGstring1,string2,string3RETURNstring1||string2||string3/**************subfunc()子函数实现***************/subfunc:PROCEDUREPARSEARGstr1,str2,str3RETURNstr3||str2||str12023/7/2136精选PPT函数和例程的搜索顺序该调用是否是内部函数或例程是否是内置函数是否是外部函数或例程FUNCSOFL:标记位,判断是否在搜索REXX程序前先搜索运行库2023/7/2137精选PPT参数传递*共享变量/************REXX******************/number1=10CALLsubroutineSAYnumber1number2EXITsubroutine:PROCEDUREnumber1=7number2=5SAYnumber1number2RETURN2023/7/2138精选PPT使用EXPOSE共享变量eg:/********REXX***********/J=1;Z.1='A'CALLTOFTSAYJKMEXIT/********子例程********/TOFT:PROCEDUREEXPOSEJKZ.JSAYJKZ.JK=7;M=3RETURN2023/7/2139精选PPT*参数传递/***********REXX******************/PARSEARGLONGWIDECALLPERIMETERLONG,WIDESAY'RESULTIS'RESULTEXIT

PERIMETER:PROCEDURE

ARGLENGTH,WIDTHPERIM=2*LENGTH+2*WIDTHRETURNPERIM2023/7/2140精选PPT内置函数

算数函数:执行对数值的运算比较函数:比较字符串和数值是否相同或判断类型转换函数:进行数据类型的转换格式函数:设置字符串中字符和空格的格式字符串操作函数:设置字符串中字符和空格的显示方式其他函数2023/7/2141精选PPT*算数函数ABS:求绝对值MAX:最大值MIN:最小值RANDOM:产生随机数SIGN:返回数值符号(-1,0,1)FORMFUZZTRUNC*比较函数COMPARE比较两个字符串,相同返回0,不同返回第一个不同字母的位置DATATYPESYMBOL*转换函数B2XC2DC2XD2CD2XX2BX2CX2D2023/7/2142精选PPT*格式函数FORMAT(number,before,after,expp,expt)before,after表示小数点前后的位数expp设置指数的位数,设置为0则不使用指数expt设置何时使用指数,当整数或小数部分的位数分别超过了expt的一倍或两倍,那么就用指数表示;若expt为0,则在有小数部分的时候就使用指数表示若expp为0,则expt自动设为0CENTER/CENTRECOPIESJUSTIFYLEFTRIGHTSPACE2023/7/2143精选PPT*字符串操作函数DELWORDFINDINDEXINSERTLASTPOSLENGTHOVERLAYPOSREVERSESTRIPSUBSTRSUBWORDTRANSLATEVERIFYWORDWORDINDEXWORDLENGTH*其他内置函数ADDRESS:返回当前命令提交执行的环境ARG:返回传给子例程的参数信息CONDITION:返回当前捕捉到的特殊情况的信息DATE:按照指定格式返回当前系统信息EXTERNALS:返回中断输入缓冲区的字符数LINESIZE:返回终端的行宽减1TIME:返回指定格式的系统时间2023/7/2144精选PPTTSO/E外部函数*OUTTRAP函数将命令的输出放在一组变量中,REXX可以处理这些变量中的输出内容调用格式OUTTRAP((off),varname,max,concat)参数:off:关闭错误跟踪varname:可以是复合变量或者数字变量的前缀,max:设置捕捉的最大行数concat:设置输出方式CONCAT:设置命令被捕捉的最大值NOCONCAT:设置每次变量的输出从变量1开始存储2023/7/2145精选PPTeg1:x=OUTTRAP("ABC",4,"CONCAT")ABC0===>3ABC1===>第一行输出ABC2===>第二行输出ABC3===>第三行输出/*若此时又有一条命令有两行输出,那么第二行不被跟踪*/ABC4===>第四行输出/*ABC0到ABC3不变*/2023/7/2146精选PPTeg2:/*REXX*/callouttrap'line.'"listdste02.rexx.lab"calloutrap'off'say"lines:"line.0doi=1toline.0sayline.iend/*运行结果*/lines:5TE02.REXX.LAB--RECFM-LRECL-BLKSIZE-DSORGFB8032720PO--VOLUMES--USER022023/7/2147精选PPT*SYSDSN函数判断指定的数据集名称是否存在或该数据集是否可用,指定的数据集是顺序数据集还是分区数据集的成员,检查是否有访问权限eg:X=SYSDSN("PRO.REXX(MEM)")IFX='OK'THEN

CALLROUTINE1ELSECALLROUTINE22023/7/2148精选PPT主要内容REXX语言简介REXX基本语法REXX命令函数与子例程数据处理REXX与子系统的交互2023/7/2149精选PPTREXX数据处理数据解析数据栈操作文件读写2023/7/2150精选PPT数据解析

*常用解析命令

PULL、ARG、PARSEVAR、PARSEVALUE-WITH等

指令

*template——list详解2023/7/2151精选PPT--PULL指令

Pull:交互式的读入,等待用户输入

Eg:say‘pleaseenteryourname’

pullname(会将小写转换成大写字母)

parsepullname(不进行转换)--ARG指令ARG:取执行或调用时传递的参数argname&parseargname

Eg:execREXX(ARG)‘dong’exec2023/7/2152精选PPT--PARSE(upper)VAR指令

sentence=‘Iloverexxverymuch’

Parsevarsentencestr1str2str3

Saystr1/*输出变量I*/

Saystr2/*love*/

Saystr3/*rexxverymuch*/--PARSEVERSION指令

Parseversionver

Sayver/*输出版本号*/2023/7/2153精选PPT*PARSEVALUE-WITH指令--语法:parsevalue[expression]with--将一个表达式解析为一个或多个变量--Eg:

Parsevalue‘rexxisgood’withstr1str2str3str4

/*str1将输出rexx*/

/*str2is*/

/*str3good*/

/*str4为空*/2023/7/2154精选PPT*Template_list详解--数据解析式通过对比源数据和模板把源数据解析成单独的数据数据解析分两步:1、将源数据解析为模板格式指定的子串2、将各子串放入对应的变量中。2023/7/2155精选PPT1、空格分隔符Eg:

Parsevalue‘valuewithblanks.’withab

/*a取得value*/

/*b取得withblank*/2、占位符分隔符

Parsevalue‘valuewithperiodsinit.’witha.b.

/*a取得value*/

/*b取得periods*/2023/7/2156精选PPT3、字符(变量)分隔符

Sentence=‘youhere,ornothere’

Parsevarsentencestr1‘,’str2/*用逗号表示该处分隔*/

Str1=‘youhere’

Str2=‘ornothere’

P=‘,’

Parsevarsentencestr1(p)str22023/7/2157精选PPT4、位置分隔符(a)列的绝对位置

String=‘tomorrowwillbebetter.’

Parsevarstringstr16str29str3

Parsevarstringstr1=6str29str3

Str1=tomor

Str2=row

Str3=‘willbebetter’

Parsevarstringstr16str21str3

Str2=rowwillbebetter

Str3=tomorrowwillbebetter2023/7/2158精选PPT(b)列的相对位置(+右移–左移)

String=‘tomorrowwaitingforu’

Parsevarstringstr1+8str2+8str3

/*str1=‘tomorrow’*/

/*str2=‘waiting’*/

/*str3=‘foru’*/

Parsevarstringstr1+8str2-8str3

Str1=tomorrow

Str2=‘waitingforu’

Str3=tomorrowwaitingforu2023/7/2159精选PPT数据栈操作数据栈操作指令:1、添加数据栈元素

Push:在数据栈顶部增加数据

Queue:在数据部底部增加数据

A=5b=10

PushA

Queueb2023/7/2160精选PPT2、删除数据栈元素

Pull:从数据栈取数据,当数据栈为空时,pull指令从终端取数据。

Pullstackitem

Parsepullstackitem3、数据栈元素数量

内置函数queued返回数据栈中元素数量

Number=queued()

Donumber

pullelement

sayelement

end2023/7/2161精选PPT文件读写1、什么时候使用EXECIO命令

a从一个数据集中读取数据

b向一个数据集中写入数据

c打开一个数据集,并不进行任何读写操作

d清空一个数据集

e从一个数据集中拷贝数据到另一个数据集中

f从一个复合变量列表中读取数据存入数据集中g向一个顺序数据集末尾增加数据h一次更新数据集中的一行数据2023/7/2162精选PPTEXECIO命令语法*格式:

EXECIOLines/*diskr/diskru/diskwddname

lineNUMread/writeParms

Lines/*:lines代表处理的记录数,*表示整个数据集

Diskr只读方式处理文件

Disku表示读取记录允许更新文件

Diskw表示写文件

lineNum开始读记录的起始位置

Read/writeParms读写参数2023/7/2163精选PPT*文件读取

a)“execio*diskrmyindd(finis”

Finis表示读完之后关闭数据集

b)“execio1diskrumyindd(open”

“execio1diskwmyindd(finis”2023/7/2164精选PPT*Diskr&diskru参数选项1、Open打开数据集

“execio0diskrmyindd(open”2、Finis读完之后关闭数据集3、Stem读取信息到一个可被索引的复合变量中

“execio*diskrmyindd(stemnewvar.”

newvar.0表示复合变量中元素的数量

使用dropnewvar.清除所有变量4、skip跳过数据集中特定行,不写入数据栈

“execio6diskrmyindd(skip”2023/7/2165精选PPTLIFO:rexx使用push指令将信息放到数据栈中FIFO:使用queue指令将信息放到数据战中默认使用FIFO输入数据集:一个I/O数据集必须首先定义成DDNAME才能通过execio进行操作。

“allocda(ur535.rexx.data)f(myindd)shrreuse”

“execio*diskrmyindd(finis”2023/7/2166精选PPT文件读取示例“EXECIO0DISKRmyindd(open”“EXECIO0diskrmyindd100(open”“EXECIO25diskrmyindd(open”“EXECIO*diskrmyindd(open”“EXECIO5diskrmyindd100(finis”2023/7/2167精选PPT文件写入

“EXECIO*DISKWmyoutdd(finis”1、diskw参数选项

(a)Open、finis、stem

“execio*diskwmyoutdd(stemnewvar.”

将复合变量内容写入到myoutdd中

(b)输出数据集

同文件读取类似,输出数据集必须首先分配一个ddname

“allocda(ur535.rexx.data)f(myoutdd)oldreuse”

“execio*diskwmyoutdd(finis”2023/7/2168精选PPT主要内容REXX语言简介REXX基本语法REXX命令函数与子例程数据处理REXX与子系统的交互2023/7/2169精选PPTREXX与子系统的交互目标:1)执行宿主命令。2)REXX与TSO环境的交互3)REXX与JES的交互4)REXX与SDSF的交互

2023/7/2170精选PPT执行宿主命令1.REXX命令指REXX语言实现本身所提供的程序操作的命令:

eg:I/O控制数据集的读写(EXECIO)和数据栈的操作等。2.宿主命令指REXX程序执行的宿主环境所能识别的命令。即识别并

执行特定命令的运行环境eg:rexx默认环境是TSO/E环境2023/7/2171精选PPTTSO/EREXX可用的宿主环境1、TSO:可执行TSO/E和REXX命令2、MVS:在非TSO/E地址空间中执行rexx命令3、LINK:可连接相同级别的模块4、ATTACH:可将不同级别的模块连接到一起5、ISPEXEC:可执行ISPF命令6、ISREDIT:可以执行ISPF/PDFEDIT命令,即可查找、修改、插入、删除数据等2023/7/2172精选PPTADDRESS命令用来指定或切换当前命令执行的宿主环境格式:AddressenvironmentAddressenvironmentcommandExpressionEg:ADDRESSISPEXEC“EDITDATASET(“DSNAME”)”只有当前命令在ispf宿主环境中执行ADDRESSISPF所有命令都将在ispf宿主环境中执行2023/7/2173精选PPT1、查看当前所处宿主环境:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论