MEMBER:XPTO1
STEPALT2
MEMBER:XPTO2
MEMBER:XPTO3
STEPALT3STEPALT VERIFY
VERIFY2
MEMBER:XPTO4
VERIFY1 VERIFY02A01STEP
MEMBER:XPTO1 STEPS:STEPALT2
MEMBER:XPTO3 STEPS:STEPALT3 STEPALT VERIFY VERIFY2
MEMBER:XPTO4 STEPS:VERIFY1 VERIFY02 A01STEP
或
MEMBER:XPTO1 STEPALT2
MEMBER:XPTO3 STEPALT3 STEPALT VERIFY VERIFY2
MEMBER:XPTO4 VERIFY1 VERIFY02 A01STEP
了解事实:每个成员名称或步骤名称最多可包含8个字符 我怎么能用REXX做到这一点?
答案 0 :(得分:2)
这可能有用,它应该检测何时找到新成员。
IF SUBSTR(mydata,1,7) = "MEMBER:" THEN DO
your code here to extract member data
END
ELSE DO
your code to handle input that doesn't include a member
END
注意我没有办法运行并检查这个,所以请将其视为指南。 mydata也是输入数据的当前行
根据评论,我发现了一些Rexx。这里显示了用于处理输入数据的EXECIO和复合变量(请注意,这是为了输入数据而设计为批量运行//INPUT01 DD inputdataset,DISP=SHR
。)
这是代码: -
/* REXX - OPCDLYMN */0000100
/*--------------------------------------------------------------------*/0001000
/* OPC/ESA Log Monitor */0002000
/*--------------------------------------------------------------------*/0003000
OPCDLYMN: 0003100
rec_count = 0 0003200
Do Forever 0004000
"EXECIO 1 DISKR INPUT01 (STEM In.)" 0004100
If rc ¬= 0 Then Leave 0004200
rec_count = rec_count + 1 0004300
If Substr(in.1,17,8) = "EQQE007I" Then Do 0004400
eqqe007i_typ = Substr(in.1,26,4) 0004420
eqqe007i_dly = Strip(Substr(in.1,83,9)) 0004430
eqqe007i_day = Substr(in.1,2,2) 0004440
eqqe007i_mon = Substr(in.1,5,2) 0004450
eqqe007i_dat = eqqe007i_day"/"eqqe007i_mon 0004460
eqqe007i_tim = Substr(in.1,8,8) 0004470
eqqe007i_hr = Substr(eqqe007i_tim,1,2) 0004480
eqqe007i_min = Substr(eqqe007i_tim,4,2) 0004490
eqqe007i_sec = Substr(eqqe007i_tim,7,2) 0004500
If eqqe007i_typ = "ALL " Then do 0004520
Say Right(eqqe007i_dly,9)" delays on "eqqe007i_dat||, 0004540
" at "eqqe007i_tim 0004550
End 0004560
End 0004600
End 0005000
Say "End of processing "rec_count" records processed" 0006000
In。是STEM IN.1 是一个复合变量,基于词根。
注意你可以使用"EXECIO * DISKR INPUT01 (STEM in.)"
,它会读入所有数据(我认为In.0会保留计数而In.1,In.2 ...到nn (其中nn是,我认为,in.0持有的值))。但是,这可能(可能)导致内存问题。因此,为什么我通常会阅读各行。
注意在If rc ¬= 0 Then Leave
中= =(即¬)之前的字符并不总是可用(我认为主要是英国键盘)。相反,你可以使用/ =(NOT EQUALS)。
所以这个程序逐行读入所有数据,直到不再存在(rc由EXECIO设置为非零。如果有错误,如数据结束)。
rec_count递增,因此记录读取的记录数。
如果第17到第24个字符是EQQE007I,则进一步处理这些行,否则开始DO循环的另一次迭代。
当时进行的处理类似于提取输入线的各个部分。如果在字符26-29处存在ALL(具有以下空格),则通过Say输出信息(如果我没记错的话,则转到SYSOUT或SYSPRINT)。
如果您对此进行了调整,那么您可能需要复制当前行以便在下一次迭代中进行比较。
最后注意每行右边的7个数字不是代码的一部分。