《rexx编程语言》PPT课件_第1页
《rexx编程语言》PPT课件_第2页
《rexx编程语言》PPT课件_第3页
《rexx编程语言》PPT课件_第4页
《rexx编程语言》PPT课件_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

1、大型主机系统管理REXX语言概览,内容概览,REXX简介 REXX语法 函数和子例程 REXX数据处理 REXX与子系统的交互,大连理工大学UNIQUE团队,主机脚本语言概述,什么是脚本语言? 脚本语言(Script Programming Language)是为了缩短传统的编写编译链接运行(Edit-Compile-Link-Run)过程而设计的计算机编程语言。脚本语言和一般程序设计语言的一个重要不同在于脚本语言通常是被解释执行,而系统程序语言通常是被编译执行。 z/OS中所提及的系统脚本语言主要有哪些? 主要包括: CLIST语言(表示“命令(Command)的序列(List)”) REX

2、X语言 USS(UNIX System Service)的Shell,大连理工大学UNIQUE团队,REXX简介,REXX: REstructured eXtended eXecutor 1979-1982 IBM Mike Cowlishaw为简化编程而设计 REXX主要用于IBM的主机系统 REXX几乎可以在世界上任何操作系统上运行,例如:Windows、Linux、UNIX、BSD、Mac OS、DOS等 REXX语言的主要应用 执行日常例行任务,例如输入TSO/E命令 调用其他REXX程序 编写ISPF应用 对问题的一次性快速解决 系统编程,大连理工大学UNIQUE团队,REXX特性

3、1、用途多样 2、可读易用 3、书写自由 4、单一的数据类型 5、强大的内置函数 6、跟踪调试方便 7、编译解释型语言,大连理工大学UNIQUE团队,REXX的组成 REXX主要包含以下几部分。 (1)指令:REXX中包含5种类型的指令,分别是关键字、赋值、标签、空子句和命令调用 (2)内置函数:此类函数由编译器直接支持,因而能够提供方便的处理功能 (3)TSO/E外部函数:此类函数由TSO/E环境支持,当REXX进行某些特定操作时,TSO/E外部函数会与系统进行交互 (4)数据栈函数(data stack):数据栈提供数据的临时存储功能,以辅助I/O操作及其他类型的操作,大连理工大学UNIQ

4、UE团队,第一个REXX程序 eg: /*REXX*/ /* 标识出该脚本文件为REXX脚本 */ SAY “WHATS YOUR NAME?” /* 输出一句提示语句 */ PULL NAME /* 将用户输入存入变量NAME */ SAY HELLO WORLD ! THIS IS NAME /* 输出结果 */,大连理工大学UNIQUE团队,REXX执行 1. 2. 3.如果REXX程序已放在系统库中,则可以直接在命令栏里指定执行,无需给出其所在的数据集名 4.批处理方式,使用JCL提交作业执行 PGM=IKJEFT01,大连理工大学UNIQUE团队,REXX调试 1、TRACE指令调试

5、 TRACE C:所有之后的命令调用都将被追踪报告 TRACE E:只追踪产生非零返回码的命令 2、REXX特殊变量RC和SIGL RC :返回码无错时为0,有错误时置为该错误的返回码 SIGL :控制流发生转变时的代码行号,SIGNAL ON ERROR 定位错误发生位置 3、交互式调试机制 通过TRACE的“?”选项或者TSO/E下的EXECUTIL TS命令选项启动,大连理工大学UNIQUE团队,REXX语法,指令概览 指令的语法规则:指令可为大写字母、小写字母或者两者的混合,但是,在编译执行过程中,指令会被自动转化成大写,用引号引用的部分除外。关于引号的使用,可以使用单引号或者双引号,

6、只要相同的引号成对即可 指令的格式:REXX语言指令格式十分自由,一条指令可以从任意列写起,系统自动忽略多余的空格和空行,若一条指令在一行之内不能全部容纳,可以续行,此时在上一行的结尾加上逗号,表示续行,这种续行方式会在两部分间加上一个空格,如果不想加入空格,可以用(|)来续行,例如: SAY THIS IS AN EXTENDED, INSTRUCTION. /* 输出“THIS IS AN EXTENDED INSTRUCTION.” */ SAY THIS IS A STRING CONT|, ENT . /*输出”THIS IS AN STRING CONTENT .” */,大连理工

7、大学UNIQUE团队,一条指令结束用分号表示,也可用分号分隔一行中的几条不同的指令。若 一行只有一条指令,也可以不标记结尾,因为默认情况下一行的结束标志着一条指令的结束,例如: SAY hello;SAY hello;SAY GO ON“ 指令的输出为: hello HELLO GO ON,大连理工大学UNIQUE团队,指令类型 在REXX中,有5种类型的指令:关键字、赋值、标签、空子句和命令调用 * 关键字:SAY ,IF ,THEN ,ELSE ,EXIT ,END ,DO * 赋值 :Variable=9;Variable =Variable+3 * 标签 :后面紧跟冒号的名称符,出现在

8、指令开始处 * 空子句 :注释或者空行,作用是增加可读性 * 命令调用:包括TSO/E REXX命令以及宿主命令,大连理工大学UNIQUE团队,变量和表达式 变量命名:大小写字母以及、#、$、?、. 、!、_等特殊符号 双字符 X41 (若要使用,需在程序中指定ETMODE) eg:OPTIONS ETMODE /*通过设置ETMODE引入双字符变量*/ =10 /*双字符变量要用括起来*/ 变量名称的约束:第一个字符不能是数字,也不能是点(.),长度不超过250字节,不能取保留字,大连理工大学UNIQUE团队,变量的取值: 变量的值可以是数值常量,如整型,浮点型,带符号数等,也可以是字符串,

9、其他变量值或表达式 如果变量没有初始化,那么它的值默认为变量名的大写字母 变量赋值可通过PARSE指令、VALUE内置函数、赋值表达式及其他编程语言 变量类型 三种类型:简单变量(Simple Variable)、复合变量(Compound Variable)和复合词干(Compound Stem),大连理工大学UNIQUE团队,简单变量:不带 句点(.) 变量,没有对其赋值,默认值为对应的大写表示。REXX对变量本身的大小写是不敏感的 复合变量 :带一个或多个句点(.) 的变量,由词干和词尾组成,遵循简单变量命名规则,变量总长度不超过255个字符,对应其他语言中的数组或者链表,但下标不一定为

10、数字 eg:TIME = 3 REXX.TIME 值为 REXX.3 复合词干:复合变量的第一个词干和第一个句点(.) 组成,用于将复合变量所表示的整个变量集赋初值 eg: room. = empty room.mine = full SAY room.1 room.yours room.mine /*输出“ empty empty full” */,大连理工大学UNIQUE团队,需要注意的是,复合变量的首段变量名通常表示符号名称本身,而剩余部分的变量接受前面所赋予的值 EG:,大连理工大学UNIQUE团队,表达式的使用 常量表达式:数字常量,字符串常量(通常写在引号中,避免混淆) 算数表达式

11、:+ - * / % (取商) / (取余) * (乘方) +/- (正负) 运算符优先级(从高到低):,大连理工大学UNIQUE团队,比较表达式 比较表达式通过比较运算返回真或假,用1和0表示。通常和IF-THEN-ELSE配合使用,用于判断程序执行的路径。比较的对象可以是数值和字符串。 比较运算符,大连理工大学UNIQUE团队,关于等于(=)和严格等于(=),大连理工大学UNIQUE团队,逻辑表达式: PUSH elem2 NUM=QUEUED() SAY NUM /*输出“2”*/ “DELSTACK” /*删除之前创建的数据栈*/,大连理工大学UNIQUE团队,2)MAKEBUF 在数

12、据栈上创建一个新的缓冲区,并返回编号,保存在RC中 DROPBUF 删除最新创建的缓冲区并清空数据 3)QSTACK 用于返回程序中存在的数据栈数量。如果没使用NEWSTACK命令,RC的值为1。 4)QBUF 就算新创建的数据栈上建立的缓冲区数量,为使用过MAKEBUF命令,QBUF命令返回0 5)QELEM 计算新创建的数据栈缓冲区中的元素数量,未使用过MAKEBUF返回值为0,与当前数据栈中元素的数量无关,大连理工大学UNIQUE团队,EXECIO EXECIO命令用于处理数据集的输入输出。可以一次从数据集中读取信息到数据栈中进行顺序处理或者放到一组变量中进行随机访问等操作。同样,也可以

13、将数据栈或者变量的信息写回数据集中。EXECIO可以对数据集进行增删改查等许多操作。可以执行I/O操作的数据集可以是PS或者是PDS/PDSE的一个成员,在对数据集进行I/O操作之前,要先通过命令将数据集分配给一个文件,EXECIO本身不具有分配功能。,大连理工大学UNIQUE团队,EXECUTIL 命令 -设置系统运行库在程序载入后是否关闭 -控制TRACE指令的开启和关闭 -终止程序的翻译过程 -禁止和回府程序对终端的输出 -修改程序包目录中的项目 -设置出了SYSPROC之外的其他运行库,大连理工大学UNIQUE团队,立即命令 立即命令(immediate command)通常用于在TS

14、O/E环境下执行REXX程序,当输入中断键进入中断模式(attention mode),之后系统会提示IRX0920I消息,此时可以输入立即命令来回应,主要有HI(Halt Interpretation),HT(Halt Typing),HE(Halt Execution),RT(Resume Typing),TS(Trace Start),TE(Trace End) TS(TraceStart)启动Trace TE(TraceEnd)结束Trace HI 停止对所有REXX和CLIST程序的翻译,包括调用该命令本身的程序 HT 常规的输出被挂起,如SAY输出指令,但REXX运行正常,错误信息

15、仍然可以显示 RT 恢复之前挂起的输 HE 终止REXX程序的执行,大连理工大学UNIQUE团队,eg: /* REXX */ MAINRTN: . CALL SUBRTN EXECUTIL TE . EXIT SUBRTN: EXECUTIL TS . RETURN,大连理工大学UNIQUE团队,程序控制流 条件控制语句 通过设定一个判断条件,通过它的真假值来选择相应的执行路线。 条件指令分为两类:二选一和多选一 (1)IF/THEN/ELSE 用于两条支路的选择 若THEN或ELSE后没有执行的内容,用空子句NOP填充;若有多条需要执行的指令,可以用DO-END来包括全部执行集合,否则只执

16、行THEN或ELSE后的第一条指令;可嵌套,注意配对 (2)SELECT/WHEN/OTHERWISE/END 用于多路选择 同样可使用DO-END来包括许多指令,OTHERWISE后的指令可省略DO-END结构,大连理工大学UNIQUE团队,eg: IF weather = fine THEN DO SAY lovely day ! IF gym=free THEN SAY lets play basketball ! ELSE NOP END ELSE SAY bad weather !,大连理工大学UNIQUE团队,eg: SELECT WHEN weather = fine THEN

17、SAY What a lovely day! WHEN tennis_count = free THEN SAY Shall we play tennis?l OTHERWISE SAY Shall we stay at home? END,大连理工大学UNIQUE团队,循环控制语句 循环指令分为两类:重复循环和条件循环 循环语句写在DO-END 结构内,循环可以嵌套,DO和END 要匹配 基本用法: Do repetitorClause Instructions End,大连理工大学UNIQUE团队,(1)重复循环语句 可用数值常量或变量来控制循环次数。当用变量时,默认情况每次变量的值加1,

18、可以通过BY来更改每次的增量,通过FOR来控制最大循环次数 eg: Do i = 1 to 10 BY 2 FOR 2 SAY HELLO END /* 结果输出两行HELLO */,大连理工大学UNIQUE团队,(2)条件循环语句 DO WHILE:第一次进入循环体前先检测条件,当条件为真时继续循环 DO UNTIL:在语句执行后进行条件检测,条件为假时继续循环 eg:QUANTITY = 20 DO NUMBER = 1 TO 10 WHILE QUANTITY =50 */ QUANTITY = QUANTITY + NUMBER SAY QUANTITY = QUANTITY END,

19、大连理工大学UNIQUE团队,(3) DO FOREVER 无限循环 死循环处理 按中断键,用户收到IRX0920I 的消息,回复 HI 若没有停止,再次按中断键,回复HE (4) LEAVE 和 ITERATE 指令 LEAVE:立刻终止循环 ITERATE:终止当次循环,大连理工大学UNIQUE团队,eg: DO i = 1 TO 5 IF i = 3 THEN ITERATE ELSE SAY i END /* 输出1 2 4 5,eg:DO outer = 1 TO 2 DO inner = 1 TO 2 IF inner 1 THEN LEAVE inner ELSE SAY INN

20、ER END SAY OUTER END /* 输出“ INNER OUTER INNER OUTER ” */,大连理工大学UNIQUE团队,中断语句 EXIT:无条件终止并且返回到程序调用处 CALL:通过调用内部或者外部子例程来中断现有程序 RETURN:调用程序结束后返回原调用处,继续执行原程序 SIGNAL:跳转到目标标签处,通常用于程序的测试或特殊情况的处理,无法返回,大连理工大学UNIQUE团队,函数与子例程,函数与子例程含义以及区别 使用函数以及子例程的好处 函数种类以及调用方法 函数的具体介绍,大连理工大学UNIQUE团队,函数与子例程含义以及区别,什么是函数 接受数据,处理

21、数据并返回值,已完成特定功能的代码片段 子例程与函数的区别 * 函数必须有返回值,子例程不必要(对比C中的过程以及函数的概念) * 函数的返回值要替代调用的位置,而子例程的返回值保存在特殊变量result中 * 调用方式不同,大连理工大学UNIQUE团队,为什么要用函数和子例程?,结构化程序所必须的 (1)将程序分为多个模块,便于维护和拓展 (2)代码的重复利用,减少开发的代码量,大连理工大学UNIQUE团队,函数种类,REXX中的函数种类 内置函数:丰富的内置函数几大地方便用户编程 用户函数:内部函数,外部函数 函数包:将函数以打包的形式发布,大连理工大学UNIQUE团队,函数和例程的搜索顺

22、序,首先查看被调用的是否是内部函数或例程 若不是查看是否是内置函数 最后查看是否是外部函数或例程,大连理工大学UNIQUE团队,函数和例程的搜索顺序,样例1,大连理工大学UNIQUE团队,函数以及子例程的调用,演示,大连理工大学UNIQUE团队,函数的具体介绍,函数的参数传递 内置函数的介绍 TSO/E外部函数,大连理工大学UNIQUE团队,函数的参数传递,交换两个数的值的函数 讨论运行结果,大连理工大学UNIQUE团队,参数传递,解决办法? 使用EXPOSE共享变量,大连理工大学UNIQUE团队,参数传递,讨论,大连理工大学UNIQUE团队,EXPOSE练习,样例1,大连理工大学UNIQUE

23、团队,EXPOSE练习,练习2,大连理工大学UNIQUE团队,递归练习(汉诺塔),样例汉诺塔,大连理工大学UNIQUE团队,内置函数,String manipulation(字符串操作函数) Comparison(比较函数) Formatting(格式) Conversion (转换函数) Arithmetic (算数函数),大连理工大学UNIQUE团队,字符串操作函数,提取字符串的一部分 add to strings(添加到字符串) “find” with strings:(查找) manipulate in “words”:(操纵字) To get the length of a stri

24、ng-length() To translate a string Translate () To reverse the characters in a string Reverse (),大连理工大学UNIQUE团队,字符串操作函数,提取字符串的一部分 - Substr (), Strip (), Left (), Right (), Delstr () 添加到字符串 - Insert (), Center (), Justify (), Overlay () “find” with strings: - Pos (), Lastpos (), Verify (), Abbrev () 操

25、作字 -Word (), Wordindex (), Wordlength (), Wordpos () - Words (), Delword (), Subword (),大连理工大学UNIQUE团队,字符串操作函数,样例程序1,大连理工大学UNIQUE团队,字符串操作函数,样例程序2,大连理工大学UNIQUE团队,字符串操作函数,样例程序3,大连理工大学UNIQUE团队,比较函数,COMPARE 比较两个字符串,相同返回0,不同返回第一个不同字母的位置,大连理工大学UNIQUE团队,Formatting函数,Center () / Centre () /*CENTER for Brits

26、*/ Copies () Format () Justify () Left () Right () Space () Strip (),大连理工大学UNIQUE团队,FORMAT,函数解释: Note that both the US English and the UK English spellings of Center are accepted. To make multiple copies of a string, use Copies (). To format and round a number, use Format (). To add or delete spaces

27、 and other characters between words, use Space (). To remove leading and/or trailing characters from a string, use Strip ().,大连理工大学UNIQUE团队,Conversion (转换函数),字符,十六进制和十进制数之间的转换 - 用于任何比较 C2X(), C2D(), D2C(), D2X(), X2C(), X2D() - 二进制和十六进制之间的转换 B2X(), X2B(),大连理工大学UNIQUE团队,Conversion (转换函数),样例程序1,大连理工大学

28、UNIQUE团队,Conversion (转换函数),样例程序2,1100 0001 1100 0010 49602 C 1 C 2,大连理工大学UNIQUE团队,Conversion (转换函数),样例程序3,大连理工大学UNIQUE团队,算数函数,ABS:求绝对值 MAX:最大值 MIN:最小值 RANDOM:产生随机数 SIGN:返回数值符号 (-1,0,1) FORM FUZZ TRUNC,大连理工大学UNIQUE团队,算数函数,样例代码1,大连理工大学UNIQUE团队,算数函数,样例2,大连理工大学UNIQUE团队,内置函数总结,内置函数总结文本,大连理工大学UNIQUE团队,TSO

29、/E外部函数,OUTTRAP函数 将命令的输出放在一组变量中,REXX可以处理这些变量中的输出内容 调用格式 OUTTRAP(off),varname,max,concat) 参数:off:关闭错误跟踪 varname:可以是复合变量或者数字变量的前缀, max:设置捕捉的最大行数 concat:设置输出方式 CONCAT:设置命令被捕捉的最大值(储存从0开始) NOCONCAT:设置每次变量的输出从变量1开 始存储,大连理工大学UNIQUE团队,TSO/E外部函数,OUTTRAP函数说明 x=OUTTRAP(Array,4,CONCAT) Array0 = 3 /*存储输出的有效行数*/ A

30、rray1 = 第一行输出 Array2 = 第二行输出 Array3 = 第三行输出 /*若此时又有一条命令有两行输出,那么第二行不被跟踪 以为设定了捕捉的最大行数*/ ABC4 = 第四行输出 /*ABC0到ABC3不变*/,大连理工大学UNIQUE团队,TSO/E外部函数,样例代码,大连理工大学UNIQUE团队,TSO/E外部函数,样例2,大连理工大学UNIQUE团队,TSO/E外部函数,SYSDSN函数 判断指定的数据集名称是否存在或该数据集是否可用,指定的数据集是顺序数据集还是分区数据集的成员,检查是否有访问权限,大连理工大学UNIQUE团队,TSO/E外部函数,样例1,大连理工大学

31、UNIQUE团队,TSO/E外部函数,样例2,大连理工大学UNIQUE团队,REXX数据处理,数据解析 数据栈操作 文件读写,大连理工大学UNIQUE团队,数据解析 常用解析命令 PULL :从终端交互式读入,比如键盘输入 ARG :取得REXX程序,函数,以及子例程的参数,并把它放入对应的 变量值中。 PARSE VAR :把整个变量值分解到该变量之后的一个或多个变量值中 PARSE VALUE-WITH :与PARSE VAR功能大体一致,但VAR只能分解变量, VALUE-WITH不仅可以变量,还可以是直接的字符串,大连理工大学UNIQUE团队,-PULL指令 Eg: say pleas

32、e enter one word pull hello (会将小写转换成大写字母:HELLO) parse pull hello (不进行转换 :hello) pull = parse upper pull - ARG指令 Eg:执行ST020.REXX.TEST(ARGEX),可以使用EXEC指令在命令行传递参数 EXEC ST020.REXX.TEST(ARGEX) hello world. 与PULL指令类似,自动赋值为大写 parse arg word1 (不进行转换) arg = parse upper arg,大连理工大学UNIQUE团队,大连理工大学UNIQUE团队,PARSE

33、VAR 指令,大连理工大学UNIQUE团队,PARSE VALUE-WITH 指令,语法:parse value expression with,大连理工大学UNIQUE团队,Template_list详解 数据解析式通过对比源数据和模板把源数据解析成单独的数据 数据解析分两步: 1、将源数据解析为模板格式指定的子串 2、将各子串放入对应的变量中。 即使没有Template_list(没有指定变量模板时),REXX依然会默认进行分解,但却不进行赋值。 Template_list的变量模板使用分隔符的方式。诸如空格,占位符,字符,位置,大连理工大学UNIQUE团队,空格分隔符,大连理工大学UNI

34、QUE团队,占位符分隔符,Parse value value with periods in it. with a . b . Say a Say b 结果: value periods a = value . = with b = periods . = in it,大连理工大学UNIQUE团队,字符(变量)分隔符,标点也是一个字符需要输出,这里“,”作为分隔符,所以没有输出,也可以使用 P = , Parse var sentence s1 (p) s2 输出结果与上面相同,大连理工大学UNIQUE团队,位置分隔符,(1)列的绝对位置,空格也是一个字符,数字代表后边紧跟着的部分起始的绝对位

35、置,大连理工大学UNIQUE团队,位置分隔符,(1)列的相对位置,右 + , 左 P1从第一列 P2从“1+10”列开始 P3从“11+3”列开始 P4从“14-1”列开始,大连理工大学UNIQUE团队,数据栈操作,数据栈操作指令: 1、添加数据栈元素 Push:在数据栈顶部增加数据 Queue: 在数据部底部增加数据 2、删除数据栈元素 Pull:从数据栈取数据,当数据栈为空时,pull指令从终端取数据,大连理工大学UNIQUE团队,从数据栈取数据,当数据栈为空时,pull指令从终端取数据,大连理工大学UNIQUE团队,数据栈元素数量并逐个显示,内置函数 queued 返回数据栈中元素数量,

36、大连理工大学UNIQUE团队,文件读写,1、什么时候使用EXECIO命令 a 从一个数据集中读取数据 b 向一个数据集中写入数据 c 打开一个数据集,并不进行任何读写操作 d 清空一个数据集 e 从一个数据集中拷贝数据到另一个数据集中 f 从一个复合变量列表中读取数据存入数据集中 g 向一个顺序数据集末尾增加数据 h 一次更新数据集中的一行数据,大连理工大学UNIQUE团队,EXECIO命令简介,格式: EXECIO Lines/* diskr/diskru/diskw ddname lineNUM read/writeParms Lines/*: lines 代表处理的记录数,*表示整个数据

37、集 Diskr 只读方式处理文件 Disku 表示读取记录允许更新文件 Diskw 表示写文件 lineNum 开始读记录的起始位置 Read/writeParms 读写参数,大连理工大学UNIQUE团队,是PS 或是PDS的一个MEMBER 与要写入的内容有相符合的数据集特性,使用EXECIO命令读取和写入数据之前,数据集应满足以下条件,文件读取 a) “execio * diskr myindd (finis” Finis 表示读完之后关闭数据集,若想继续读取数据集中的下一行,则不要使用FINIS参数 b) “execio 1 diskru myindd (open” “execio 1

38、diskw myindd (finis” 可对读取的最后一条记录进行更新操作,用DISKW命令写回,大连理工大学UNIQUE团队,DISKR & DISKRU 参数介绍 1、Open 打开数据集 “execio 0 diskr myindd (open” (并且将打开位置的指针放在第一条记录之前) 2、Finis 读完之后关闭数据集 3、Stem 读取信息到一个可被索引的复合变量中,后跟一个变量名,保证该变量列表 接收文件的内容 “execio * diskr myindd (stem newvar.” newvar.0 表示复合变量中元素的数量,从数据集中得到的信息保存在 newvar.1,

39、newvar.2等中 使用 drop newvar. 清除所有变量 或把所有变量值设为零 newvar. = 4、skip 跳过数据集中特定行,不写入数据栈 “execio 6 diskr myindd (skip”,大连理工大学UNIQUE团队,LIFO: 以LIFO的顺序读取栈中的数据 FIFO:以LIFO的顺序读取栈中的数据,若没有指定,则默认使用FIFO 输入数据集:一个I/O数据集必须首先定义成DDNAME才能通过execio进行操作 “alloc da(ur535.rexx.data) f(myindd) shr reuse” “execio * diskr myindd (fin

40、is”,大连理工大学UNIQUE团队,文件读取示例,“EXECIO 0 DISKR myindd (open” 打开一个数据集但不读取任何记录 “EXECIO 0 diskr myindd 100 (open” 从第100行打开一个数据集但不读取任何记录 “EXECIO 25 diskr myindd (open” 只读取特定的行 “EXECIO 5 diskr myindd 100 (finis” 从第100行读取5行数据 “EXECIO * diskr myindd 100 (finis” 从第100行读取所有数据,大连理工大学UNIQUE团队,从第5行读取3行,大连理工大学UNIQUE团

41、队,文件写入,“EXECIO * DISKW myoutdd (finis” 1、diskw参数选项 Open “EXECIO 0 DISKW myoutdd (open” finis “EXECIO 0 DISKW myoutdd (finis” stem “EXECIO * DISKW myoutdd (STEM newvar.” 将复合变量内容写入到myoutdd中,直到发现一个没有初始化的变量,如有10个元素, EXECIO命令将在第11个停止。 也可以指定写入的数据行数,如 “EXECIO 5 DISKW myoutdd (STEM newvar.” /* 写入5行数据,即使包含未被

42、初始化的变量 */,大连理工大学UNIQUE团队,大连理工大学UNIQUE团队,文件写入举例,从 ST020.REXX.TEST(MATH1) 复制内容写入到 ST020.REXX.TEST(M1),EXECIO返回码,0 :操作正常结束 1 :做DISKW操作时,数据被删除 2 :执行DISKR或者DISKRU时,未读到指定行时文件已经结束 4 :执行DISKR或者DISKRU时,数据集为空。文件无法打开且无数据返回 20 :EXECIO命令没有执行,返回错误信息,大连理工大学UNIQUE团队,REXX与子系统的交互,执行宿主命令 REXX与TSO环境的交互 REXX与JES的交互 REXX

43、与SDSF的交互 REXX与MVS 的交互,大连理工大学UNIQUE团队,执行宿主命令,1 .REXX命令 指REXX语言实现本身所提供的程序操作的命令: eg:基本I/O控制、数据栈服务及控制流机制等操作命令。 2.宿主命令 指REXX程序执行的宿主环境所能识别的命令。 宿主环境即识别并 执行特定命令的运行环境。 eg:rexx默认环境是TSO/E环境,大连理工大学UNIQUE团队,TSO/E REXX可用的宿主环境,1、TSO:可执行TSO/E 和REXX命令 2、MVS:在非TSO/E地址空间中执行REXX命令 3、LINK:可连接相同级别的模块 4、ATTACH:可将不同级别的模块连接

44、到一起 5、ISPEXEC:可执行ISPF命令 6、ISREDIT:可以执行ISPF/PDF EDIT 命令,即可查找、修改、插入、删除数据等,大连理工大学UNIQUE团队,ADDRESS命令 用来指定或切换当前命令执行的宿主环境 格式:Address environment Address environment commandExpression Eg:ADDRESS ISPEXEC “EDIT DATASET(“DSNAME”)” 只有当前命令在ISPF宿主环境中执行 ADDRESS ISPF 所有命令都将在ispf宿主环境中执行,大连理工大学UNIQUE团队,1、查看当前所处宿主环境: CurEnvName= Address() 2、检测某宿主环境是否可用: Subcom Environment Eg: Arg dsname Subcom ispexec If RC=0 then Address is

温馨提示

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

评论

0/150

提交评论