查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
malathy_tv
新的用户
已加入:2007年5月29日 帖子:34 地点:钦奈
|
|
|
|
我正在设计一个屏幕来从用户那里获取输入,对其进行验证并在输入正确的情况下进一步处理,如果面板上的输入错误则显示错误消息
谁能告诉我如何在面板中弹出这些错误消息?
您能否让我知道ZMSG,LMSG,SMSG,Zedsmsg,Zedlmsg的正确用法。我不知道所有这些以及使用方式的确切含义(例如,它将很有用)。
这些方面的任何帮助都将非常有用。 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
|
|
码: |
zerrsm ="short message text"
zerrlm ="long message text"
地址ISPEXEC "SETMSG MSG(ISRZ002) " |
自我解释不是吗 |
|
回到顶部 |
|
 |
malathy_tv
新的用户
已加入:2007年5月29日 帖子:34 地点:钦奈
|
|
|
|
你好
谢谢回复
我想知道如何在实际编程中使用这些变量并真正使用它。
例如:
我的面板是从用户那里获取输入,并在rexx中对其进行验证并相应地发送消息
说面板是这样的
输入您的Emp ID:_____________
说用户输入AAAAA
我需要在REXX中进行验证并弹出一条消息,提示
“输入有效的Emp ID”
如何才能做到这一点。 |
|
回到顶部 |
|
 |
恩里科·索里切蒂
高级主持人

已加入:2007年3月14日 帖子:10715 所在地:意大利
|
|
回到顶部 |
|
 |
UmeySan
活跃成员

已加入:2006年8月22日 职位:771 地点:德国
|
|
|
|
嗨!
举个小例子:
面板被支付。数据集的验证在rexx中完成。
如果DSN不存在,则设置err-msg并再次显示面板。
数据集... ISPF.MESSAGES用于定义用户按摩。
J120830.ISPF.MESSAGES(UMMSG03):
联合会035 .ALARM =否
“数据集不存在”
J120830.ISPF.CLIST(TVADL):
地址ISPEXEC"ADDPOP"
乌潘 = "TVADL002"
联合会 =“ UDS1”
联合会 =“”
DSNRC = 9
在进行DSNRC时> 0
地址ISPEXEC“显示面板(” 乌潘“)
味精(“ 联合会”)
游标(“ 联合会”)“
DISPRC = RC
如果显示> 0 THEN EXIT DISPRC
地址ISPEXEC“ VGET(UDS1)配置文件”
地址ISPEXEC“ DSINFO DATASET('” UDS1“')”
DSNRC = RC
中频DSNRC>0 THEN 联合会 ='UMMSG035'
结束
J120830.ISPF.PANELS(TVADL002):
+请提供数据集名称
+
+ ... DS名称:+ \ z
+
)在里面
.ZVARS ='(UDS1)'
VGET(UDS1)配置文件
PROC
VER(&UDS1,NB,MSG = 联合会037)
VPUT(UDS1)配置文件
)结束
希望对大家有帮助,UmeySan |
|
回到顶部 |
|
 |
malathy_tv
新的用户
已加入:2007年5月29日 帖子:34 地点:钦奈
|
|
|
|
你好
非常感谢你的回复。
我尝试了一个像您一样的示例,并创建了自己的消息,并将该消息库与ISPMLIB连接起来
码: |
/ * REXX * /
乌潘 = "TY"
联合会 = "INP"
联合会 = " "
地址ISPEXEC"DISPLAY 面板 ("UMPAN")
味精("UMMSG")
光标("UMCUR")"
ADDRESS ISPEXEC
SAY RC
如果INP = 100,则
联合会 = 'MAL002'
|
码: |
)ATTR
+ TYPE(TEXT) INTENS(HIGH)
\ TYPE(INPUT) INTENS(LOW)
)BODY EXPAND($$)
+ $-$
+
+ 输入: +\Z
+
)INIT
.ZVARS ='(INP)'
)PROC
VER(&INP,NB,MSG=MAL002)
)END
|
我也输入了100,但没有收到错误消息
请让我知道是否做错了事。 |
|
回到顶部 |
|
 |
malathy_tv
新的用户
已加入:2007年5月29日 帖子:34 地点:钦奈
|
|
|
|
你好
谢谢大家的帮助
我再次尝试并纠正了错误,原因是REXX
我没有DO WHILE条件告诉REXX什么时候应该在什么条件下执行它。 |
|
回到顶部 |
|
 |
迪克·谢勒
主持人荣誉

已加入:2006年11月23日 帖子:19245 位置:矩阵内部
|
|
|
|
很高兴听到它现在正在工作。
感谢您发布解决方案
d |
|
回到顶部 |
|
 |
UmeySan
活跃成员

已加入:2006年8月22日 职位:771 地点:德国
|
|
|
|
Hi & namastē malathy_tv !
很高兴听到,它有效。
很高兴在chennai /印度的一段代码中看到“ 乌潘”变量!
Poi varukiren& Regards,
UmeySan |
|
回到顶部 |
|
 |
malathy_tv
新的用户
已加入:2007年5月29日 帖子:34 地点:钦奈
|
|
|
|
嗨,古鲁斯,
我还有一个疑问
如果我们已按以下方式检入了传递消息ID的面板,则能够调用错误消息
VER(&INP,NB,MSG=MAL001)
然后验证并再次通过REXX传递
但是,如果不想验证面板中的输入但希望验证并为无效输入抛出错误消息怎么办?
如何做到这一点。
提前致谢 |
|
回到顶部 |
|
 |
UmeySan
活跃成员

已加入:2006年8月22日 职位:771 地点:德国
|
|
|
|
嗨,malathy_tv!
您真的不需要“ VER(&面板中的INP,NB,MSG = MAL002)“
PROC部分,如果您将在Rexx中进行所有验证。
如您所见,在我的小示例中,我使用了两种不同的消息。
在面板中,仅检查了输入是否为空白MSG037。
然后在Rexx中,检查输入的DSN是否存在。
如果DSN不存在,则使用MSG035。
所以这爸被分开两个&不同的验证。
Poi varukiren& Regards,
UmeySan |
|
回到顶部 |
|
 |
malathy_tv
新的用户
已加入:2007年5月29日 帖子:34 地点:钦奈
|
|
|
|
嗨,梅森,
Nandri(谢谢)
我明白你的意思....
我还有另一件事我想创建自己的错误消息,如果我创建msglib(PDS)并使用“ ALLOC FA(ISPMLIB)DA(PDS.MSGLIB)”与ISPMLIB串联,就足够了吗?当我尝试执行此操作时,它说的更多
在“ ISPMLIB”库中找不到该消息。
当前对话框声明:
显示面板(BFSP)味精(MAL004)
我的REXX的一部分是:
做STA> 0
地址ISPEXEC“显示面板(” 乌潘“)
MSG(“ 联合会”)“
...
P1 = SUBSTR(POL,1,2)
A =验证(P1,XRANGE('A','Z'))
IF(A = 0& B = 0) THEN STA = 0
ELSE 联合会 ='MAL004'
任何想法.... |
|
回到顶部 |
|
 |
c
高级会员
已加入:2006年7月28日 职位:1702 所在地:澳大利亚
|
|
|
|
你好
您确定ALLOC命令有效吗?
跟踪。
格里 |
|
回到顶部 |
|
 |
malathy_tv
新的用户
已加入:2007年5月29日 帖子:34 地点:钦奈
|
|
|
|
你好
当我通过执行ISRDDN检查ALLOC时,我可以看到MSGLIB与ISPMLIB连接在一起
但是错误消息仍然显示未找到...还有其他方法可以创建自己的消息。
谢谢。 |
|
回到顶部 |
|
 |
c
高级会员
已加入:2006年7月28日 职位:1702 所在地:澳大利亚
|
|
|
|
你好
我假设您能够通过ISRDDN看到该成员。 MEM MAL004
MAL004会员是什么样的?
格里 |
|
回到顶部 |
|
 |
malathy_tv
新的用户
已加入:2007年5月29日 帖子:34 地点:钦奈
|
|
|
|
你好
它不是PDS中的成员,就像某个成员中的msg id一样,该成员存在于PDS PDS.MSGLIB中
我能够使用ISRDDN看到PDS PDS.MSGLIB
例如:
MAL002“无效选项”
MAL004“无效状态号” |
|
回到顶部 |
|
 |
malathy_tv
新的用户
已加入:2007年5月29日 帖子:34 地点:钦奈
|
|
|
|
你好
MAL004不是成员,它类似于MSGID,它存在于PDS.MSGLIB库的成员之一内
我只能看到使用ISRDDN将PDS.MSGLIB与ISPMLIB串联在一起
成员内部存在的MSGID的示例:
MAL002“无效选项”
MAL004“无效状态号” |
|
回到顶部 |
|
 |
malathy_tv
新的用户
已加入:2007年5月29日 帖子:34 地点:钦奈
|
|
|
|
你好
我发现了一种使用ZEDMSG填充错误消息的方法
这里抛出面板以获取输入,在rexx中验证并抛出错误消息
正如UmeySan所说的那样,我使用了do while循环,但是当我这样做时,无法同时检查和验证我的两个输入
如果这些方法中的任何一个是正确的,它都会在不检查其他方法的情况下出现,这都是因为使用DO WHILE STA>0,并在每次检查后将值设置为零,但如果我没有这样做,则不会像我之前所说的那样收到错误消息
/ * REXX * /
STA = 9
做STA> 0
ZEDSMSG =“”
地址ISPEXEC
“ ADDPOP行(24)列(60)”
"显示屏("面板")"
AGN_CHK:
A3 =验证(AGN,XRANGE('0','9'))
IF A3 = 0 THEN STA = 0
ELSE ZEDSMSG ='无效的代理商编号'
"ISPEXEC 味精味精(ISRZ001)"
返回
STE_CHK:
A4 =验证(STE,XRANGE('A','Z'))
中频(A4 = 0&STA = 0时的长度(STE)= 2
ELSE ZEDSMSG ='无效状态码'
"ISPEXEC 味精味精(ISRZ001)"
返回
所以在这方面可以做什么
提前致谢。 |
|
回到顶部 |
|
 |
佩德罗
全球主持人

已加入:2006年9月1日 帖子:2214 地点:硅谷
|
|
|
|
关于您的程序:
码: |
/ * REXX * /
STA = 9
做STA> 0
ZEDSMSG =" "
地址ISPEXEC
"ADDPOP ROW(24) COLUMN(60)"
"DISPLAY 面板 ("PANEL")"
AGN_CHK:
A3 =验证(AGN,XRANGE('0','9'))
IF A3 = 0 THEN STA = 0
ELSE ZEDSMSG ='无效的代理商编号'
"ISPEXEC 味精味精(ISRZ001)"
返回
STE_CHK:
A4 =验证(STE,XRANGE('A','Z'))
IF (A4 = 0 & LENGTH(STE) = 2 )THEN STA=0
ELSE ZEDSMSG ='无效状态码'
"ISPEXEC 味精味精(ISRZ001)"
返回 |
1.我认为您需要END语句来匹配DO WHILE
2.您的面板名称是一个变量,但是该名称未在任何地方设置
3.删除RETURN语句。他们将结束程序,但是我想您要一直尝试直到没有发现错误为止。
4.在两个检查都通过之前,我认为您不应该将STA = 0设置为0。目前,如果其中一个还可以,则退出,但另一个不能。
5.也许它在论坛中丢失了,但是您应该缩进嵌套行
6. ELSE仅执行一项声明。您需要在DO / 结束子句中包含ZEDSMSG和SETMSG。
7.将ADDPOP移出循环。
8.在您添加ADDPOP之后进行REMPOP的好习惯
9.在DO WHILE上,最好将条件括在括号内。
10.检查DISPLAY的返回码。用户可能已取消面板,在这种情况下,您应该退出并且不执行任何字段检查。
11.如果“ DISPLAY 面板(”)有效,则感到惊讶。此处不应有空格。
12.我认为您不需要标签(AGN_CHK,STE_CHK)
13.我认为您的短消息应该混合使用。 |
|
回到顶部 |
|
 |
|