Mainframe Is Back 学习资料REXX分享 之二:运算符(REXX Operators)
REXX中基本的运算符包括以下几种:
1. ‘+’: 加
2. ‘-‘: 减
3. ‘*’: 乘
4. ‘/’: 除
5. ‘%’: 取整运算
6. ‘//’: 取余运算
例子:
say (5 % 2) /* Returns the integer part of division result. Displays: 2 */
say (5 // 2) /* Returns the remainder from division. Displays: 1 */
say (5 ** 2) /* Raises the number to the whole power. Displays: 25 */
REXX中的比较运算符主要包括:
1. ‘=’ : 相等
2. ‘\=’: 不等
3. ‘>’ : 大于
4. ‘<’ : 小于
5. ‘>=’ : 大于或者等于,即不小于
6. ‘<=’ : 小于或者等于,即不大于
7. ‘<>,><’ : 大于或者小于,即不等于
例子:
'37' = '37' /* TRUE - a numeric comparison */
'0037'= '37' /* TRUE - numeric comparisons disregard leading zeroes */
'37' = '37 ' /* TRUE - blanks disregarded */
'ABC' = 'Abc' /* FALSE - string comparisons are case-sensitive */
'ABC' = ' ABC ' /* TRUE- preceding & trailing blanks are irrelevant */
'' = ' ' /* TRUE- null string is blank-padded for comparison */
REXX中的关系运算符主要包括:
1. ‘&’ : 与
2. ‘|’ : 或
3. ‘\’ : 非
例子:
if ('A' = var1) & ('B' = var2) then
say 'Displays only if BOTH comparisons are TRUE'
if ('A' = var1) | ('B' = var2) then
say 'Displays if EITHER comparison is TRUE'
if \('A' = var1) then say 'Displays if A is NOT equal to var1'
一个简单的REXX小游戏(A Simple REXX Game)
最近发现了一个REXX写的简单猜数字游戏,其中有很多内容很适合初学者来掌握REXX,游戏的源代码如下:
/********************** REXX ****************************************/
/* The NUMBER GAME – User tries to guess a number between 1 and 10 */
/* Generate a random number between 1 and 10 */
the_number = random(1,10)
say “I’m thinking of number between 1 and 10. What is it?”
pull the_guess
if the_number = the_guess then
say ‘You guessed it!’
else
say ‘Sorry, my number was: ‘ the_number
say ‘Bye!’
运行:
在ISPF的’6 COMMAND’下输入以下内容:
EXEC ‘MIB.REXX.EXEC(NUMGAME)’
解释:
1. REXX语言不区分大小写,所以在上述程序中出现了’say’关键字用来输出信息,功能同’SAY’
2. ‘random’是REXX中内置的函数,用于生成一个随机数。
3. 程序中通过一个if…else语句,来完成对随机生成数字和用户输入数字的判断。
4. 变量’the_guess’和’the_number’无需提前定义类型,在第一次使用时,系统会自动创建,并且分配内存空间。
Mainframe Is Back 学习资料REXX分享 之一
最近,我跟11都比较忙,所以没有什么时间写东西跟大家分享。不过,最近我跟11都积累了很多Mainframe的资料,下面我将用最近的一段时间,跟大家分享一下REXX。REXX是什么呢?首先,REXX是一门程序设计语言,可以应用于多种平台上。当然,也可以运行于mainframe的MVS和VM平台上。我理解REXX的最大特点就是无需编译,直接运行。REXX的这个特点直接导致了REXX程序开发的高效性,在mainframe平台上开发一些小型应用非常合适。第一个REXX程序:Hello MIB首先从一个简单的REXX程序开始,我们一起来分享REXX带给我们的惊喜。就是让系统输出一条语句: HELLO MIB
REXX的语法规则很接近于自然语言,比如这里要输入字符串,就用命令“SAY”,即可,具体语法规则如下所示:不需要加任何行尾结束符号,可以存放于PDS或者PD中,由于这次的例子比较多,我们就专门建立一个PDS用于试验各种REXX程序,我们取名为:MIB.REXX.EXEC。
则该程序的命名为:MIB.REXX.EXEC(HELLO),具体内容如下所示:
********************* Top of Data ************
SAY ‘HELLO MIB’
********************* Bottom of Data *********
编辑好了我们第一个REXX程序,下面我们尝试来运行它,运行的方式也很简单,是通过ISPF来操作的。在ISPF的“ISPF Primary Option Menu”中输入“6”,选择“6 Command Enter TSO or Workstation commands”
在命令行中输入:
===> EXEC ‘MIB.REXX.EXEC(HELLO)’
运行即可,运行后,得到的结果是:
IKJ56479I COMMAND SAY NOT FOUND OR REXX IDENTIFIER IS MISSING+
IKJ56479I SUPPLY ‘/* REXX */’ AS THE FIRST RECORD TO EXECUTE AS A REXX EXEC OR,
FOR AN EXPLICIT EXEC, SUPPLY THE EXEC KEYWORD ON THE EXEC COMMAND
***
如上所示,系统没有执行程序,而返回了一段错误信息,原因是什么呢?原因在在于REXX文件有其特定的标识方式。在每一个REXX文件的起始处,必须有一个注释行,(在REXX中,注释以/***********/来表示),并且注释行中必须包含有“REXX”这个字符串,具体例子如下所示:
/***************** REXX ***********************/
把以上的信息加入到我们的MIB.REXX.EXEC(HELLO)中,修正后的程序如下所示
********************************* Top of Data *********************
/************************ REXX ***********************************/
SAY ‘HELLO MIB’
******************************** Bottom of Data *******************
运行程序,得到的结果是:
HELLO MIB
***
至此,我们第一个REXX程序就完成了。
我对REXX的体会就是:
1. 很轻便,开发简捷,语法规则使用起来很容易上手。
2. 无需编译,直接从“COMMAND”处运行。
3. 运行语法: EXEC ‘DATA SET NAME(MEMBER)’
4. 每个REXX程序中必须有一个标识自身文件类型的标识行,必须位于首行,且行中需要包含“REXX”字符串。
至此,就跟大家分享这么多,下次我将跟大家分享REXX中的数据类型与运算符。


